分享

Python - 爬虫(入门篇)

问题导读:
1. 抓取网页内容的思路是什么?
2. 如何提升爬虫容错性能?





解决方案:

爬虫思路

分析URL组成

一般我们要抓取的内容都是在2级,3级页面中,所以,我们的URL生产者可以通过分析URL组成构造URL,例如:

[mw_shl_code=applescript,true]http://www.().com/user/ul-1-1-1.html
http://www.().com/user/ul-3-1-1.html
http://www.().com/user/ul-4-1-1.html[/mw_shl_code]

只是ul-后面的不同,我们只要在1级页面抓取到ul后面的数字即可,更简单的是,如果ul后面的数字有规律,我们可以直接创建一个list遍历既可。

另外

如果URL组成没有规律,我们就能直接匹配超链接

2016-12-07_093501.jpg

最后

请求页面,(正则表达式)分析,得到我们需要内容

模拟登陆

  • 分析post提交数据
  • 验证码破解(pillow)
  • rsa处理加密



异常处理

try:
                response = urllib2.urlopen(request)
                content = response.read().decode(encoding='gbk', errors='ignore').encode(encoding='utf-8', errors='ignore')
                # <a href="/user/ul-10-1-55.html">55</a>

            except:
                content = ''
                with open('./log/error.log', 'a') as l:
                    l.write(user_url_total + '\n')
                pass
                # 匹配到分页列表,最后一个,是pageTotal
            pat = re.compile(r'<a href="/user/.*?">(\d*)</a>')
            totalPage = re.findall(pat, content)
            # 无分页(就一页)
            if len(totalPage) == 0:
                totalPage = ['1']

  • 在抛出异常的时候,请求到页面致空
  • 判断正则表达式是否匹配到信息,处理(正则表达式中可能是个list,一个页面都多个匹配到的,所以就是两个list)
  • 写入log 文件
  • 每一级页面设置一个标志变量,在向本地写时,同事将时间,标志变量写入log文件中,下次运行,直接从最后一个开始运行


入门案例

链接:http://pan.baidu.com/s/1pLCTHMF 密码:wijp

没找到任何评论,期待你打破沉寂

关闭

推荐上一条 /2 下一条