python 爬豆瓣top250遇到问题?
import requestsimport xlwt
from lxml import etree
# 网页请求
def gethtml(url):
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
response=requests.get(url,headers=headers)
return response.content.decode()
#网页解析
def getxpath(a):
html=etree.HTML(a)
d=html.xpath("//*[@id='content']/div/div/ol//li")
# print(d)
data_list = []
for i in d:
temp={}
temp['rank']=i.xpath(".//em/text()")
temp['title']=i.xpath("./div/div/div/a/span/text()")
temp['score']=i.xpath(".//span[@class='rating_num']/text()")
data_list.append(temp)
return data_list
# 翻页
def next_page():
url_np="https://movie.douban.com/top250?start={}&filter="
url_list=
return url_list
#执行函数
def run_db():
page=next_page() #显示所有页,并形成列表'
for url in page:
ghtml=gethtml(url) #获取当前页源码
gpath=getxpath(ghtml) #获取当前页数据
return gpath
print(run_db())
想输出完整的250条内容,但不知为什么只输出最后一页25条内容?不知道代码哪里有问题?另外用pandas把爬取结果输出excel格式的内容代码怎样写?刚开始学爬虫,希望有大神能支持一下 for url in page:
ghtml=gethtml(url) #获取当前页源码
gpath=getxpath(ghtml) #获取当前页数据
return gpath
这里写错了,最终止返回最后一次的数据 kof21411 发表于 2021-3-15 21:45
for url in page:
ghtml=gethtml(url) #获取当前页源码
g ...
意思是每爬完一页数据就要输出并保存数据?我理解是全部爬完再统一输出,理解出错? 最好的办法学会用DEBUG,否则你会一直遇到各种问题。
在调试中多看看就明白了。
double07 发表于 2021-3-15 22:07
意思是每爬完一页数据就要输出并保存数据?我理解是全部爬完再统一输出,理解出错?
你试试把return改成print是不是就全部输出了,可以用一个list或写入文件保存结果 网上有源代码,你对比下,这个应该没有什么区别啊,爬虫的东西都差不多。py charm不会debug ? super.me 发表于 2021-3-15 22:27
网上有源代码,你对比下,这个应该没有什么区别啊,爬虫的东西都差不多。py charm不会debug ?
一直用spyder,不知道有debug{:1_893:},试试pycharm 楼主能分享一手python中文版吗 13435211357 发表于 2021-3-15 22:39
楼主能分享一手python中文版吗
我用annaconda,链接:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 本帖最后由 神秘阿凯 于 2021-3-15 23:05 编辑
这样应该就行了
页:
[1]
2