python3爬虫 链接+表格+图片 思路

左侧部门列表每点击一次都有一个新的js网页出现,Request URL可以明确看出网址,且每个网址都有其规律:

点击了三个部门,返回的网址如下,可以看出是有规律的,此处deptid正是对应于下图中的<span>内容:

这种倒推的思路,首先要做的就是部门的id提取出来,然后匹配成Request URL去获取js页,需要的id就在下面:

<li>
<span>
<a href="javascript:changebm('130110022')" id="130110022" title="鹿泉区国土资源局">
								区国土局
								</a>
</span>
<span>
<a href="javascript:changebm('130110023')" id="130110023" title="鹿泉区农业畜牧局">
								区农牧局
								</a>

此处有分页的信息,但是用BeautifulSoup解析url得到的内容不全:

解决办法:

1.原因是代码附在一个json里面的,并非写死在html里面的,chrome上显示的和传过来的源码不一样,我把json解析出来,然后再用BeautifulSoup解析就好了。 

2.估计Ajax动态加载的,看network是否有Ajax请求。bs只是用来解析html/xml代码。
在你获取网页内容时没获取到js动态加载的内容(比如document.write啥的),用什么解析器都一样。
尝试动态爬虫工具,常见的有selenium,还有dryscrape,ghost.py

 其他可能出现解析不全的原因:

参考beautifulsoup网址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#id9

1.将soup = BeautifulSoup(res.text,"lxml")

改为html = BeautifulSoup(result,"html.parser") #因为使用'lxml'会导致内容丢失,故此使用'html.parser'

检查过HTML无残缺标签或提前闭合,最后使用html.parse替代lxml解决问题,怀疑是解析器兼容性导致

2.soup.find_all()找不到a标签,然而用chrome查看该网站源码是存在a标签的,gethtml(源码就不贴了)函数运作也没问题,单独打印soup发现只解析了部分html代码.

问题的原因:没有安装第三方的HTML解析器,所以用的是默认的解析器。而Python 2.7.3的默认解析器存在文档容错能力差的毛病。解决方法: pip install html5lib (或者 lxml)

反爬措施出现,破之!:

爬到的数据一部分:

初步清洗空元素之后的数据:

对应上图爬到的法定办结时限(工作日、承诺办结时限(工作日)两个数据,直接取

正则匹配之后替换脏数据就可以了(此处为无图片网页):

接下来爬取带有图片的网页:

url为带中文的,需要特殊处理

至此,所有的数据都已经爬取到!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值