python爬虫实战,多线程爬取京东jd html页面:无需登录的网
站的爬虫实战
2014-12-02 20:04:31
标签:网站 爬虫 python import
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
【前言】
# 本脚本用来爬取jd的页面:1 http://list.jd.com/list.html?cat=737,794,870到 的所有html的内容和图片。 # ......http://list.jd.com/list.html?cat=737,794,870&page=11&JL=6_02 3 _04 5 6 # 本脚本仅用于技术交流,请勿用于其他用途 # by River # qq : 179621252 # Date : 2014-12-02 19:00:00
【需求说明】
以京东为示例,爬取页面的,获取页面中得数据:记录到data.txt;获取页面中得图片,保存下来。
1、list的url如下
2、商品详情页的url如下:
【技术说明】
使用了python的以下库 import os#检查文件是否存在等 from HTMLParser import HTMLParser#1 2 用于解析html的库,有坑:如果2.6python,可能悲剧 http请求 的3 5 6 7 4 import httplib,re#发起import sys,json,datetime,bisect#使用了二分快速查找 url,分析出url的各部分功能 from threading import Thread#使用多线程 from urlparse import urlparse#解析8 import socket #设置httplib超时时间 【代码逻辑说明】
1、run(获取最终要的结果)
2、parseListpageurl:返回list的总共的页面数量
3、judgelist:判断该list是否已经爬取完毕了,第一个list中的所有url、最后list的所有url都爬取完毕了,那么久说明list的所有page爬取完毕了(实际上是一种弱校验)
4、getfinalurl_content:如果list没爬取完毕,每个list爬取,解析list中得每个html(判断html是否爬取过),获得内容和img
【坑说明】
1、需要设置超时时间,和重试,否则爬取一个url卡住的时候,整个线程都悲剧了。
2、有编码的坑,如果页面是gb2312的编码,需要转换为utf-8的编码:httprestmp.decode('gbk').encode('utf-8')
3、parser.feed的内容,如果存在一些特殊字符,可能需要替换,否则解析出来会莫名不对
4、图片保存,根据url获取前面两个数字,保存。以免一个目录下保存了过多的图片。
【执行结果】
相关推荐: