BeautifulSoup4抓取不能超过网站的第一页(Python 3.6)

刘爱莉

我正在尝试从该网站的首页刮到第14页:https : //cross-currents.berkeley.edu/archives?author=&title=&type=All&issue=All®ion=All这是我的代码:

import requests as r
from bs4 import BeautifulSoup as soup
import pandas 

#make a list of all web pages' urls
webpages=[]
for i in range(15):
    root_url = 'https://cross-currents.berkeley.edu/archives?author=&title=&type=All&issue=All&region=All&page='+ str(i)
    webpages.append(root_url)
    print(webpages)

#start looping through all pages
for item in webpages:  
    headers = {'User-Agent': 'Mozilla/5.0'}
    data = r.get(item, headers=headers)
    page_soup = soup(data.text, 'html.parser')

#find targeted info and put them into a list to be exported to a csv file via pandas
    title_list = [title.text for title in page_soup.find_all('div', {'class':'field field-name-node-title'})]
    title = [el.replace('\n', '') for el in title_list]

#export to csv file via pandas
    dataset = {'Title': title}
    df = pandas.DataFrame(dataset)
    df.index.name = 'ArticleID'
    df.to_csv('example31.csv',encoding="utf-8")

输出的csv文件仅包含最后一页的目标信息。当我打印“网页”时,它表明所有页面的网址均已正确地放入列表中。我究竟做错了什么?先感谢您!

ec

您只需覆盖所有页面的相同输出CSV文件,就可以.to_csv()在“追加”模式下调用以将新数据添加到现有文件的末尾:

df.to_csv('example31.csv', mode='a', encoding="utf-8", header=False)

或者,最好将标题收集到标题列表中,然后转储到CSV中一次:

#start looping through all pages
titles = []
for item in webpages:
    headers = {'User-Agent': 'Mozilla/5.0'}
    data = r.get(item, headers=headers)
    page_soup = soup(data.text, 'html.parser')

    #find targeted info and put them into a list to be exported to a csv file via pandas
    title_list = [title.text for title in page_soup.find_all('div', {'class':'field field-name-node-title'})]

    titles += [el.replace('\n', '') for el in title_list]

# export to csv file via pandas
dataset = [{'Title': title} for title in titles]
df = pandas.DataFrame(dataset)
df.index.name = 'ArticleID'
df.to_csv('example31.csv', encoding="utf-8")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用python3的pdfminer库提取pdf文件的第一页

Codeigniter 3博客错误:分页仅显示第一页

TYPO3-一页网站

Python 3 IPv6组播

矩阵在Python Numpy中变成(3,)而不是(6,3)

在Python中抓取第二页给出第一页的数据

抓取工具无法解析第一页的内容

将 int ([3,6]) 数组转换为 [[1,2,3],[1,2,3,4,5,6]]

Ionic3 / 如何在不返回第一页的情况下在两个页面之间进行导航

有人可以解释为什么此代码返回6 6 6 6 6而不是1 2 3 4 5

禁用Bootstrap 3一页网站的活动链接样式

(xPathHelp) Scrapy 不会跳转到下一页,只会抓取第一页

4,5,6 ... 3D图上的尺寸数据?

jQuery从文本“ 2-6”创建数组,例如[2,3,4,5,6]

更新选择=(选择%6)+ 1从python 2到python 3

Stripe 定期付款,但每 3 或 6 个月一次

在Java中找到1=>5的函数;2=>4;3=>3; 4=>2;5=>1;6=>7;7=>6;

交换以2的[1,2,3,4,5,6] = [2,1,4,3,6,5]分组的相邻元素

Python 3:http.server是否支持ipv6?

为什么list(set([[2,1,3,6,5,3,6,4]))自动排序列表?

Ruby排序-为什么“预期:[7、6、5、5、4、3、3]”时rspec错误似乎与“获得:[7、6、5、5、4、3、3]”相同?

Python中只抓取第一页并将详细内容保存为数据框

需要帮助了解错误(F3'(6 3 4 1))不是实数Lisp代码

为什么n = [1,2,3,4,5,6,7,8],n [:6:-2]在Python中是[8]?

从此元素获取链接| python3 BeautifulSoup4

我有 10 页,我在第 4 页,然后我想要 2,3,4,5,6 作为页码

第一页显示页码

错误:.dex文件中方法引用的数量不能超过64K.6

Selenium webdriver 循环遍历所有页面,但只抓取第一页的数据