通过循环脚本循环遍历多个站点的最佳意见

时间:2018-05-18 16:29:12

标签: python xml python-3.x beautifulsoup python-requests

我有一个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]来调用单行。这样我就可以创建一个循环。我最终想要提供多个地图并让脚本重复。目前,我无法调用特定链接,即使在查看文档后也缺乏知识。

2 个答案:

答案 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