python3.2 多线程小爬虫一只
2013-05-16 13:06
465 查看
# -*- coding:utf-8 -*- """ 多线程抓取网页 """ import gzip from urllib import request as urllib2 import threading from pyquery import PyQuery as pq threads = [] web_site_url = "http://www.oschina.net/question/tag/python" # OS CHINA 下python标签 def work(url): """ callback function """ # 出现urllib2.HTTPError: HTTP Error 403: Forbidden错误是由于网站禁止爬虫,可以在请求加上头信息,伪装成浏览器访问 # 伪装浏览器头 headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} if not url: url = web_site_url req = urllib2.Request(url=url, headers = headers) feed_data = urllib2.urlopen(req).read() feed_data = gzip_decode_content(feed_data) data = pq(feed_data) get_next_page(data) if data : data("ul li.question").each(parse_html) def parse_html(i, element ): pq_element = pq(element) user_img = pq_element("a.ShowUserOutline img").attr("src") # user_name = pq_element("a.ShowUserOutline img").attr("title") question = pq_element("div.qbody h2 a").text() date_str = pq_element("div.qbody div.Date").text() date_str = date_str.split(",")[0].strip() print("%s\t%s\t%s" % (question, date_str, user_img)) def get_next_page(data): if data : page_li = data("ul.pager").eq(1).find("li.next") if page_li : page_params = page_li.find("a").attr("href") next_page_url = web_site_url + page_params threading.Thread(target=work, args=(next_page_url, )).start() def gzip_decode_content(doc=""): """ 根据URL返回内容,有些页面可能需要 gzip 解压缩 """ try: html = gzip.decompress(doc).decode("utf-8") #解码 except: html=doc.decode("utf-8") return html def main(): work(()) if __name__ == "__main__": main() # import urllib.request # # url = "http://www.oschina.net/" # headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11') # # opener = urllib.request.build_opener() # opener.addheaders = [headers] # data = opener.open(url).read() # # print(data)
相关文章推荐
- 【Python3.6爬虫学习记录】(十四)多线程爬虫模板总结
- python多线程图片爬虫
- Python爬虫实例2-多线程爬虫抓取糗事百科数据
- Python 爬虫学习笔记之多线程爬虫
- 使用Python多线程爬虫爬取电影天堂资源
- 用Python教你如何“养”一只DHT爬虫
- Python 爬虫(2)多线程
- Python 爬虫第三步 -- 多线程爬虫爬取当当网书籍信息
- Python多线程爬虫爬取电影天堂资源
- 【原创】编写多线程Python爬虫来过滤八戒网上的发布任务
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(2)
- 编写简单的网络爬虫 (python3.2)
- Python爬虫学习笔记(2):多线程入门
- Python爬虫多线程爬搜索引擎
- Python爬虫之路——简单网页抓图升级版(增加多线程支持)
- python 广度多线程爬虫
- python 多线程+gzip压缩 爬虫
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(2)
- python爬虫爬取糗百成人图片多线程版本
- 一个用Python实现的多入口全网爬的多线程爬虫的实现