python小白 使用pd.DataFrame模块保存多个网页数据,运行后的结果只有第一页的数据
import  requests
from lxml import etree
headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}
r = requests.get('https://book.douban.com/subject/34857216/comments/hot?p={1-3}',headers=headers)
t=r.text

s=etree.HTML(t)

x=(s.xpath('//*[@id="comments"]/ul[1]/li/div[2]/p/span/text()'))    #浏览器复制
import  pandas  as  pd
import  numpy as np
df=pd.DataFrame(x)
df.to_csv('duanping6.csv',encoding="utf_8_sig")

图片说明

请教一下各位大神,请问这个什么原因导致只能爬取保存第一页的数据,是因为url写的有问题吗?

1个回答

"https://book.douban.com/subject/34857216/comments/hot?p={}".format(i) p是分页值, 你得给他一个循环值 例如有三页, 也就是range一个1,4,这样就有三页数据了

Return_Li
い未亡程序猿! 回复dla00: https://blog.csdn.net/Return_Li/article/details/105547588 看链接
6 个月之前 回复
Return_Li
い未亡程序猿! 回复dla00: import requests from lxml import etree import pandas as pd import numpy as np if __name__ == '__main__': headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'} for i in range ( 1, 4 ): r = requests.get ( 'https://book.douban.com/subject/34857216/comments/hot?p=}'.format ( i ), headers=headers ) t = r.text s = etree.HTML ( t ) x = (s.xpath ( '//*[@id="comments"]/ul[1]/li/div[2]/p/span/text()' )) # 浏览器复制 print(x) df = pd.DataFrame ( x ) df.to_csv ( r'hk_back_HQ\hk_back_HQ\apps\orders\duanping6.csv', encoding="utf_8_sig",mode='a' )
6 个月之前 回复
Return_Li
い未亡程序猿! 回复dla00: `
6 个月之前 回复
Return_Li
い未亡程序猿! 回复dla00: 我给你试过了啊你给出的地址三页数据都可以拿到啊
6 个月之前 回复
dla00
dla00 回复い未亡程序猿!: 爬出来还是只有一页
6 个月之前 回复
Return_Li
い未亡程序猿! 回复dla00: 给写入文件时 加一个mode="a" , 表示以追加的方式写入
6 个月之前 回复
Return_Li
い未亡程序猿! 回复dla00: import requests from lxml import etree import pandas as pd import numpy as np headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'} for i in range(1,3): r = requests.get ( 'https://book.douban.com/subject/34857216/comments/hot?p=}'.format(i), headers=headers ) t = r.text s = etree.HTML ( t ) x = (s.xpath ( '//*[@id="comments"]/ul[1]/li/div[2]/p/span/text()' )) # 浏览器复制 print(x) df = pd.DataFrame ( x ) df.to_csv ( 'duanping6.csv', encoding="utf_8_sig",mode='a' )
6 个月之前 回复
dla00
dla00 不行,保存出来的还是只有一页
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问