python 多线程爬虫

本文介绍如何创建和运行一个Python多线程爬虫。首先,你需要将代码拆分为三个.py文件,并确保它们位于同一目录下。接着,确保安装了MySQL数据库,并配置连接参数,如host、user、password和database。
摘要由CSDN通过智能技术生成
#wenzheng_spider.py
# encoding:utf-8
import numpy as np 
import requests as reqs
import utils_wz as ut
import wenzheng_item as item
from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
from concurrent.futures import as_completed  , wait ,  ALL_COMPLETED
import logging
logging.basicConfig(format='levelname:%(levelname)s 进程ID %(process)d, \n filename: %(filename)s :%(message)s', filename="test.log",filemode='a')
logging.root.setLevel(level=logging.INFO)


# 单线程版本
def do_spider(maxpage=10):
	'''
	返回一个item类型的 ,类似字典的对象为元素的可迭代对象。
	参数:
		maxpage表示要爬取的最大页码,根据实际情况设定;默认前前3页。

	'''
	start_url='http://wz.sun0769.com/index.php/question/report?page=%d'
	pages=maxpage
	pagesize=30
	page_urls=(start_url%page for page in np.arange(pages)*pagesize)
	ses=reqs.session()
	ses.cookies=ut.dict2cookiejar(ut.cookies)

	for url in page_urls:
		resp=ses.get(url,headers=ut.headers,allow_redirects=True, proxies=None,)
		# resp=ses.get(next(page_urls),headers=ut.headers,allow_redirects=True, proxies=None,)
		html=''
		try:
			html=resp.content.decode(resp.apparent_encoding)
		except Exception as e:
			html=resp.text
			print('已经自动解码,请查看最终数据编码是否正确!')

		topics		=	ut.html_parse(html,'//a[@class="news14"]/text()')
		dates		=	ut.html_parse(html,'//td[@class="t12wh" ]/text()')
		net_friends	=	ut.html_parse(html,'//td[@class="t12h" ]/text()')
		detail_links		=	ut.html_parse(html,'//a[@class="news14"]/@href')
		details=[]

		for link in detail_links:
			# print(link)
			resp_d=ses.get(link,headers=ut.headers,allow_redirects=False, proxies=None,)
			# print(resp.status_code)
			html_d=''
			try:
				html_d=resp_d.content.decode(resp_d.apparent_encoding)
			except Exception as e:
				html_d=resp.text
				print('已经自动解码,请查看最终数据编码是否正确!')
			detail="\n".join([i.strip() for i in ut.html_parse(html_d,'//td[@class="txt16_3"]/text()') if len(i.strip())>0])
			# print(detail)
			details+=[detail]
		# print(details)


		for i,j,k,l 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值