python - 爬取人民日报的评论员文章,碰到问题了,求解答。
PHPz
PHPz 2017-04-17 17:58:53
[Python讨论组]

新手,在学习python爬虫,环境是python3.4,想爬取人民日报评论员文章,现在只怕去了一个网页,代码如下,

import requests
from bs4 import BeautifulSoup
import re

myUrl = "http://cpc.people.com.cn/pinglun/n1/201/0613/c78779-28428425.html"
response = requests.get(myUrl)
soup = BeautifulSoup(response.text, "lxml", from_encoding="gbk")
print(soup.title.string.encode('ISO-8859-1').decode('gbk'))

for a in soup.find_all():
    print(a.string.encode('ISO-8859-1').decode('gbk'))

网页上出错的源代码如下:
《 人民日报 》( 2016年06月13日 01 版)
我的出错提示如下:
Traceback (most recent call last):
File "pa_chong_lx.py", line 21, in

print(a.string.encode('ISO-8859-1').decode('gbk'))

AttributeError: 'NoneType' object has no attribute 'encode'
原因分析:
我查找的关键词是text-indent: 2em; display: block;" id="paper_num">《 人民日报 》( 2016年06月13日 01 版) 格式与前边的主题文章代码不一样,所以出错,求解答怎么改。

新手,因为编码的问题卡了好久,感觉一步一个坑,步步是坑!python虽然简单,但也正是简单,我不知道哪里出错了,或者是知道错误但不知道怎么改正。

PHPz
PHPz

学习是最好的投资!

全部回复(2)
大家讲道理

找到一个公共的元素,然后用正则来筛选数据吧

伊谢尔伦

报错原因NoneType类没有encode属性,说明你用soup.find_all()没有匹配到括号内的参数,你试试先匹配一下tag,再匹配style,可能会找到原因,实在不行上正则

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号