文档介绍:python爬虫实战,多线程爬取京东jdhtml页面:无需登录的网站的爬虫实战-12-0220:04:31标签:网站爬虫pythonimport版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。【前言】123456# 本脚本用来爬取jd的页面:http://list./?cat=737,794,870到# ......http://list./?cat=737,794,870&page=11&JL=6_0_0的所有html的内容和图片。# 本脚本仅用于技术交流,请勿用于其它用途# by River# qq : 179621252# Date : -12-02 19:00:00【需求说明】   以京东为示例,爬取页面的,获取页面中得数据:;获取页面中得图片,保存下来。1、list的url如下2、商品详情页的url如下:【技术说明】12345678使用了python的以下库import os#检查文件是否存在等from HTMLParser import HTMLParser#用于解析html的库,有坑:,可能悲剧import httplib,re#发起http请求import sys,json,datetime,bisect#使用了二分快速查找from urlparse import urlparse#解析url,分析出url的各部分功能from threading import Thread#使用多线程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的编码:('gbk').encode('utf-8')3、,如果存在一些特殊字符,可能需要替换,否则解析出来会莫名不对4、图片保存,根据url获取前面两个数字,保存。以免一个目录下保存了过多的图片。【执行结果】1、console输出2、、(保存已经爬取过的url)4、图片(下载的图片)【代码详情】123456789101112131415# -*- coding: utf-8 -*- __author__ = 'River' # 本脚本用来爬取jd的页面:http://list./?cat=737,794,870到# ......http://list./?cat=737,794,870&page=11&JL=6_0_0的所有html的内容和图片。 # 本脚本仅用于技术交流,请勿用于其它用途# by River# qq : 179621252# Date : -12-02 19:00:00  import os#创立文件from HTMLParser import HTMLParser#用于解析html的库,有坑:,可能悲剧import httplib,re#发起http请求import sys,json,datetime,bisect#使用了二分快速查找from urlparse import urlparse#解析url,分析出url的各部分功能from threading import Thread#使用多线程import socket #设置httplib超时时间#定义一个ListPageParser,用于解析ListPage,如http://list./?cat=737,794,870  #htmlparser的使用简介#定义intt方法:需要使用到得属性#定义handle_starttag,处理你想分析的tag的具体操作#定义handle_data,遇到你定义的情况,获取相应标签的data#定义你获取最终返回的各种数据class ListPageParser(HTMLParser):