大概一个月前开始接触到python,当时看着i春秋学院的课程,了解到python是黑客编程的利器(然而当时我也并不知道是为什么),就开始看python核心编程,一开始并没有什么头绪,只是按部就班的看书。有一天,逛知乎的时候看到了网络爬虫这个领域,开始慢慢了解,并喜欢上它,python的代码对于我这种门外汉来说非常友好,真的很适合作为入门语言来学习,至于前辈所说的局限性,等慢慢深入之后再学习java吧。
今天所述是最近学习爬虫的总结,也许有许多不准确的地方,权当以后做回顾时的笑料吧!(话说现在打字都很慢。。。。。)
练习了python的基础操作之后从知乎了解到两个python的库,requests and Beautifulsoup4。看网易云课堂的python爬虫课程,选择使用pycharm作为编译器。requests是用一种获取网页get请求的库,Beautifulsoup是用来解析网页的库,使用起来非常方便(前人栽树后人乘凉啊)。至于这两种库的具体使用方法,已经有很多的总结,我也不想再详细描述(其实以现在的水平想描述清楚确实挺困难。。。),下面所说的,是我所遇到一些很蠢,很容易犯的错误。在用Beautifulsoup解析网页之后,依靠网页的CSS标签抓取所需的信息,不同的信息有不同的特征,也正是利用这一点,才可以准确抓取到想要的信息,不过在查看网页信息时一定要注意观察,有时你所想要抓取的信息由极其相似的两种样式,一定要观察整个网页,不可遗漏,写代码的过程其实花不了多少时间,观察和思考才是最重要的,在爬取安居客租房信息时我遇到了这样两种样式:
#content > div.wrapper > div.mainbox.cf > div.lbox > div.pinfo > div.box > div.phraseobox.cf > div.litem.fl > dl:nth-child(1)
#commmap > div.box > div.phraseobox.cf > div.litem.fl > dl:nth-child(1)
第一个是描述房源信息的,第二个是描述房源所在的小区信息,注意看,后面几项完全一样(从div.box开始),当时我就是因为没有仔细观察整个页面,结果只关注的div.box后面的样式,结果爬取到的信息总是与预期不相符,花了好长时间我才想起再去仔细观察一下网页结构,那时才发现了问题,所以,写代码之前的准备工作非常重要,有了正确的思路,再加上细致的观察,就可以最大程度的避免报错。这是第一个问题。
第二个问题与前面的相似,也是页面的观察问题,不过这个确实是报错之后才更容易发现问题,在爬取58同城二手市场的30万链接的时候,我按照视频教程中老师的思路对页面进行的分析,后来发现页面的结构与原来有了较大的改变(视频是十个月之前的),我所想要抓取的是个人用户发布的商品链接,然而在不同的分类页面下,商品链接的插入方式有所差异,较为简单的是商家的商品在个人商品之前,这在页面结构上有很大区别,比较容易抓取,后来发现在其它一些页面下(比如二手摩托车),商家的商品链接是夹杂在个人商品链接之中的,这与大家平时浏览新闻时出现的推广链接一样,在初次爬取的时候我没有仔细看数据库中的数据,在利用这些爬取的链接进一步进行详情页爬取时,出现了url异常的错误,然后我就看了数据库中存放的链接,确实有一些url是异常的,然后就打开58,多翻了几个页面就发现了问题所在。然后就修改了代码。
其他的都是一些新手易犯的错误,比如缩进问题,还好现在的IDE非常的给力,一有错误就会马上提示,再次感谢前人的努力。
最后附上爬取58的代码,没有使用代理ip,最近正要研究一下知乎大神的开源代理ip池,之后再修改一下吧,高手莫笑。。。
页面发生变化,更改一下代码。
最近学习使用scrapy框架。还是非常方便的