如何在没有for循环的情况下抓取网址列表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在没有for循环的情况下抓取网址列表?相关的知识,希望对你有一定的参考价值。

我有一批网址列表,我想抓取这些网址上的一些信息

daa = ['https://old.reddit.com/r/Games/comments/a2p1ew/', 'https://old.reddit.com/r/Games/comments/9zzo0e/', 'https://old.reddit.com/r/Games/comments/a31a6q/', ]

for y in daa:
uClient = requests.get(y, headers = {'User-agent': 'your bot 0.1'})
page_soup = soup(uClient.content, "html.parser")
time= page_soup.findAll("p", {"class":"tagline"})[0].time.get('datetime').replace('-', '')

而且我很好地得到了我想要的所有time。但是我需要在没有for循环的情况下这样做,或者我的意思是我需要open并在下一步写一个文件但如果我在同一个循环中这样做,输出很奇怪。如何在没有for循环的情况下获得time

答案

你可以如上所述使用open(file, 'a')。或者我喜欢做的是将所有内容追加到表中,然后将整个内容写为文件。

import requests
import bs4 
import pandas as pd


results = pd.DataFrame()

daa = ['https://old.reddit.com/r/Games/comments/a2p1ew/', 'https://old.reddit.com/r/Games/comments/9zzo0e/', 'https://old.reddit.com/r/Games/comments/a31a6q/', ]

for y in daa:
    w=1
    uClient = requests.get(y, headers = {'User-agent': 'your bot 0.1'})
    page_soup = bs4.BeautifulSoup(uClient.content, "html.parser")
    time= page_soup.findAll("p", {"class":"tagline"})[0].time.get('datetime').replace('-', '')

    temp_df = pd.DataFrame([[y, time]], columns=['url','time'])
    results = results.append(temp_df).reset_index(drop = True)

result.to_csv('path/to_file.csv', index=False) 

以上是关于如何在没有for循环的情况下抓取网址列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 for 循环的情况下从列表中删除元素?

如何从片段内的列表视图打开链接网址?

如何在不使用 for 循环的情况下将列表中的所有项目与整数进行比较

如何在没有AppEngine for Google云端存储的情况下获取服务网址?

如何连接所有列表(每个列表都是我的 for 循环)[重复]

如何在不使用for循环的情况下从pyspark中的列表创建数据框?