这周正式开始学习,今天星期四,前面三天都花了很多时间去敲代码。截止昨天,我完成了所有第一周的学习和作业,打算做一个小结,查缺以及预习。
一、爬虫知识
-
认识网页,几个最基础的标签:
<html>
<head>
</head>
<body>
<div>
<img>
<ul>
<h2></h2>
<li></li>
<a></a>
<span></span>
</ul>
</div>
<div class="footer">
<p>© JD-coding</p>
</div>
</body>
</html>
-
再来是提取网页信息:
第一步:request.get(url) # 获取网页
第二步:BeautifulSoup(第一步.txt, 'lxml') # 解析网页
第三步:第二步.select('...') # 根据提取词(见下)提取信息
select()返回的是列表,里面全是标签对象,标签有①get_text()的方法来获取文本;
②当有“多对一”的情况时(比如一个商品的标签可以有多个),对标签用.stripped_strings来获取多个文本,并可用list(标签.stripped_strings)来列表化;
③用:标签.get(class="src(举例)") 来获取属性信息。
-
关于find_all:
有个题目是获取“星级”,实心星星和空心星星对应不同属性的span
标签,获取星级就是数父级标签
下,共有多少个<span>实心</span>
```python
products_stars = soup.select('.ratings')
.ratings的 . 代表class!
for rate in products_stars:
star = len(rate.find_all('span','glyphicon glyphicon-star'))
4. ####从网页中获取多个链接,然后挨个传入函数解析:
这个其实挺好办的,从网页获取目标链接,然后撞到一个列表里面,然后迭代传入函数。有两点想要说明一下:
- 或许这个并没有我想象的那么简单,之前看的书_web scrapy with python_ 里面用的不是列表是set(),而且有可能会需要对爬取到的链接做字符串处理,比如.split(' ')、切片等等。
- 计数器:因为我希望在python运行的过程中明确看到进度,所以我在迭代列表时加入了print( list.index(i) ),可以看到现在跑的是第几个元素。但我坚信应该有更聪明的办法,只是我现在还不懂。
5. ####js隐藏图片真实地址:
在爬取Taylor图片的时候,我遇到一个问题是,获取到的图片全部都是一样的名字。
![一个问题.png](http://upload-images.jianshu.io/upload_images/2595866-ba454f3b84253f85.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
应该说这个问题,仍然悬而未决,因为我没有在我爬取的源代码里面找到真实地址。
6. ####关于js的另一种情况:
有一个小片段是:爬取58二手商家商品页面的“浏览量”,这个浏览量也是被js控制,当刷新网页是,最开始的浏览量是0,忽然画面跳了一下才变成了真正的浏览量。
要获取真实的浏览量,要去chrome-检查-source,source里面有所有的动作(js),在里面找到想要的地址,然后运用到爬虫当中。
>关于怎么找这个地址,老师并没有讲清楚,我也只能用心感受。
>![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2595866-8f2c31f02474e1f9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
>怎么用这个地址的话,是这样的:
>![获取浏览量.png](http://upload-images.jianshu.io/upload_images/2595866-f0f0617fbfac373d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
>先处理url,截取出那串数字,把数字用来组织api地址,解析api,处理api返回的结果(split……)
6. ####使用代理爬取数据
在爬取58转转的时候,我的ip老是被屏蔽,说我MAX云云,于是我采用了[每爬取一次换一个代码的方法](https://mugglecoding.gitbooks.io/qa/content/ru_he_huo_qu_dai_li_ip.html),日后也应该会蛮长用到的。
> _好吧,总结的……差不多了_
> 我的作业们:
> [1-1作业:动手做网页][1]
> [1-2作业:爬取商品信息][2]
> [1-3作业:爬取租房信息][3]
> [1-4作业:爬取Taylor Swift][4]
> [1-5作业:爬58转转][5]
[1]: http://www.jianshu.com/p/b2849ef74f00
[2]: http://www.jianshu.com/p/9b94e7759ee0
[3]: http://www.jianshu.com/p/9d589f0d9ba2
[4]: http://www.jianshu.com/p/05f1486f8744
[5]: http://www.jianshu.com/p/a740ce126974