繁体   English   中英

使用 BeautifulSoup 对列表进行 Web 抓取

[英]Web-scraping through a list using BeautifulSoup

我需要获取以下网站列表的所有链接(从 dataframe 列转换为列表):

urls = df['URLs'].tolist()

将每个 url 保存在原始数据集副本中的新列 ( Links ) 中。

要从这些网站之一获取信息,我正在使用:

http = httplib2.Http()
status, response = http.request('https://www.farmaciairisdiana.it/blog/') # for example

for link in BeautifulSoup(response,'html.parser', parse_only=SoupStrainer('a')):
    if link.has_attr('href'):
        print(link['href'])

这段代码运行良好(我测试了几个案例)。

如何迭代每个这些 url,将结果保存到新列中?

您可以迭代列表urls并将每个链接保存到结果列表。 然后创建新的 dataframe 或将此列表添加到新列。

例如:

http = httplib2.Http()

all_links = []
for url in urls:  # `urls` is your list from the question
    status, response = http.request(url)

    for link in BeautifulSoup(response,'html.parser', parse_only=SoupStrainer('a')):
        if link.has_attr('href'):
            all_links.append(link['href'])


new_df = pd.DataFrame({'Links': all_links})
print(new_df)

# or    
#df['Links'] = all_links

编辑:要创建新的 dataframe,您可以使用此示例:

http = httplib2.Http()

all_links = []
for url in urls:  # `urls` is your list from the question
    status, response = http.request(url)

    l = []
    all_links.append({'URLs': url, 'Links': l})

    for link in BeautifulSoup(response,'html.parser', parse_only=SoupStrainer('a')):
        if link.has_attr('href'):
            l.append(link['href'])


new_df = pd.DataFrame(all_links)
print(new_df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM