Как использовать bs4 для сканирования нескольких страниц одновременно? - PullRequest
0 голосов
/ 06 декабря 2018

Я хочу собрать комментарий к reddit, и я использую praw, чтобы получить идентификатор документа, например a2rp5i.Например, я уже собираю набор идентификаторов, например

docArr=
['a14bfr', '9zlro3', 'a2pz6f', 'a2n60r', 'a0dlj3']
my_url = "https://old.reddit.com/r/Games/comments/a0dlj3/"
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
content_containers = page_soup.findAll("div", {"class":"md"})
timestamp_containers = page_soup.findAll("p", {"class":"tagline"})
time = timestamp_containers[0].time.get('datetime')

Я хочу использовать время в качестве имени файла и хочу сохранить содержимое в виде текстового файла

outfile = open('%s.txt' % time , "w") 
for content_container in content_containers:
    if content_container == "(self.games)":
        continue
    data = content_container.text.encode('utf8').decode('cp950', 'ignore')
    outfile.write(data)
outfile.close()

Эта попыткахорошо, что я могу сохранить только один URL-адрес, но я хочу сохранить идентификатор в docArr в то же время

url_test = "https://old.reddit.com/r/Games/comments/{}/"
for i in set(docArr):
    url = url_test.format(i)

Это дает мне правильный URL-адрес.Но как мне сохранить time и content_container всех URL в docArr одновременно?

1 Ответ

0 голосов
/ 07 декабря 2018

вам просто нужно добавить отступ к текущему коду

for i in docArr:
    url = url_test.format(i)
    uClient = uReq(url)
    ....
    ....
    outfile = open('%s.txt' % time , "w") 
    for content_container in content_containers:
        ....
        ....
    outfile.close()
...