Лучшее мнение о зацикливании нескольких сайтов через зацикливание скрипта - PullRequest
0 голосов
/ 18 мая 2018

У меня есть 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 голосов
/ 18 мая 2018

Так что просто вызовите функцию с картой или списком карты.Не вижу реальной проблемы

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
0 голосов
/ 18 мая 2018

Я бы переключился на urllib3 http://urllib3.readthedocs.io/en/latest/user-guide.html

и использовал бы встроенный менеджер пула.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...