我有一个xml站点地图。我想在地图上的所有链接上运行脚本。这是为我提供链接的代码。
from lxml import etree
import urllib
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_firsturl = 'https://www.desertessence.com/sitemap.xml'
pagedata = urllib.request.urlopen(my_firsturl)
mapa = soup(pagedata, "lxml-xml")
print (mapa)
在其他HTML网站上,我可以调用[0], [1]
来调用单行。这样我就可以创建一个循环。我最终想要提供多个地图并让脚本重复。目前,我无法调用特定链接,即使在查看文档后也缺乏知识。
答案 0 :(得分:1)
我会切换到urllib3 http://urllib3.readthedocs.io/en/latest/user-guide.html
并使用内置poolmanager。 http://urllib3.readthedocs.io/en/1.2.1/managers.html
import urllib3
from bs4 import BeautifulSoup
url = 'https://www.desertessence.com/sitemap.xml'
req = urllib3.PoolManager(10)
res = req.request('GET', url)
mapa = BeautifulSoup(res.data, "lxml")
for links in mapa.select("url loc"):
print(links.text)
答案 1 :(得分:0)
所以只需用地图或地图列表调用一个函数。不要看真正的问题
def evaluate_maps(maps):
if isinstance(maps, list):
for map in maps:
evaluate_map(map)
else:
# if its one map
evaluate_map(maps)
def evaluate_map(map):
# do stuff for 1 map
# try using yield for better/faster result