python 方法记录-通过爬虫案例 (1)

以人人车(https://www.renrenche.com/)为爬取对象

在获取列表页(https://www.renrenche.com/bd/ershouche/p1)的所有汽车概述信息所在标签时,可以用BeautifulSoup的两种方法:

car_info1 = soup.find_all('a', 'thumbnail')     # fin_all 方法:'a'为标签,'thumbnail'为class属性
car_info2 = soup.select('li.span6.list-item.car-item a.thumbnail')     # select 方法:'li'为'a'的父节点,'span6.list-item.car-item'为'li'的class属性,'thumbnail'为'a'的class属性

课程里(http://sp.lovedata.cn/course/141/learn#lesson/2004)获取基础信息的示范,是将基础信息框架中包含的具体信息内容,在for循环语句前就提取出来(注:for循环语句之前得i到各车辆信息的结果列表,for循环语句则将结果列表依次输出),窃以为,这样可能会造成依次输出的结果并非对应匹配。

即,原始信息:车辆信息A: [a1, a2, a3],车辆信息B: [b1, b2, b3],车辆信息C: [c1, c2, c3]

for循环语句前抓取的结果列表:O: [a1, b1, c1], P: [a2, b2, c2], Q: [a3, b3, c3]

for循环输出的结果:[a1, a2, a3],[b1, b2, b3],[c1, c2, c3],也就是得到了原始信息。

但,若因某种原因,车辆信息A之前,出现了一个x3,

则for循环语句前抓取的结果列表:O': [a1, b1, c1], P': [a2, b2, c2], Q': [x3, a3, b3]

for循环输出的结果:[a1, a2, x3],[b1, b2, a3],[c1, c2, b3]

——现不知道会不会有这种情况出现,若出现,则后期要再查找或剔除错误项,会比较困难(标号为3的字段皆不能用,a, b, c的数据皆受影响)


窃以为,有一种方式可以对应上述错误匹配情形的出现:基础信息框架中包含的具体信息内容,在for循环语句之中提取出来,只要获取到a, b, c所在的信息框架,那么a, b, c的信息分别都是独立的,不会互相影响(即便c的字段与a, b不同,也不会干扰a和b);后续倘若要剔除错误项,删除单一项或若干项(如c)即可,不会出现影响整一个字段的情况。

service_fee = soup.select('p.box-service')[0].strong.text		# BeautifulSoup的写法,后面可直接跟前部结果里面的一个标签
service_fee = soup.select('p.box-service strong')[0].text

以上两行代码的结果是一样的,都是获取p标签下的strong标签内容。


遇到的错误/警告:

(1) This code is unreachable.

return abc
print abc

后来知道return 语句之后,是再不执行的,所以print 语句就无效了。需要执行的话,放在return 语句之前就好了


(2) Exceeded 30 redirects.

错误在循环中的个别处出现。

网上搜索到这句意思是重定向次数太多,为防止耗尽CPU而被强制终止了(链接);既然是浏览器问题,而我又设置了在每次循环中将user agent信息在user agent列表中随机获取一个,结合“错误在循环中的个别处出现”这一情况,猜测问题可能出在user agent列表中。

-->将随机获取user agent信息,改为固定某一user agent信息,挨个排查,果然发现,原来是

'Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50' 这个信息有问题。删去后便不再出现该错误信息。




快捷键:

光标变粗:按insert变回来

批量修改变量名:选中后shift+F6


备忘:

课程建议将错误处理放在最后,会比较简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值