l线程池抓取lianjia
1. 线程池 的应用
from multiprocessing.dummy import Pool
import requests
from lxml import etree
url="https://sz.lianjia.com/ershoufang/co32/"
# url="https://sz.lianjia.com/ershoufang/pg2co32/" from multiprocessing.dummy import Pool headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36', } import pymongo res = requests.get(url=url,headers=headers) class Ljia(): def __init__(self): self.start_url ="https://sz.lianjia.com/ershoufang/co32/" self.headers ={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36', }
self.client = pymongo.MongoClient()
self.collention = self.client.Ljia.lianjia def get_content(self,url): # 提取数据
html = requests.get(url,headers=self.headers) tree = etree.HTML(html.text) li_list=tree.xpath('//ul[@class="sellListContent"]/li') for li in li_list:
item={}
item['title'] =li.xpath(".//div[@class='title']/a/text()")[0]
item['detail_url'] = li.xpath(".//div[@class='houseInfo']/a/@href")[0]
item['houseInfo'] =li.xpath(".//div[@class='houseInfo']//text()")
item['houseInfo'] =[i.strip() for i in item['houseInfo'] if i.strip()]
item['houseInfo'] = ''.join(item['houseInfo'])
item['totalPrice'] = li.xpath(".//div[@class='totalPrice']//text()")
item['totalPrice'] = [i.strip()for i in item['totalPrice'] if i.strip()]
item['totalPrice'] = ''.join(item['totalPrice'])
item['Price'] = li.xpath(".//div[@class='unitPrice']/span/text()")[0]
item['followInfo'] =li.xpath(".//div[@class='followInfo']//text()")
item['followInfo'] = [i.strip() for i in item['followInfo'] if i.strip()]
item['followInfo'] = ''.join( item['followInfo']) print(item) return item def get_page_url(self): # 生成待抓取的url yield self.start_url for i in range(2,101): url = "https://sz.lianjia.com/ershoufang/pg%sco32/"%i print('正在抓取:=============%s'%url) yield url def save_data(self,item):
# 保存数据
if item: self.collention.insert(item) else:
print('数据不存在===========') def run(self): pool = Pool(5)
# 线程池进行抓取数据
data = pool.map(self.get_content,self.get_page_url())
# 线程池进行存储
pool.map(self.save_data,data) if __name__ == '__main__': lian_jia = Ljia() lian_jia.run()
l线程池抓取lianjia的更多相关文章
- 基于requests模块的cookie,session和线程池爬取
目录 基于requests模块的cookie,session和线程池爬取 基于requests模块的cookie操作 基于requests模块的代理操作 基于multiprocessing.dummy ...
- python爬虫构建代理ip池抓取数据库的示例代码
爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检 ...
- Python爬虫【四】Scrapy+Cookies池抓取新浪微博
1.设置ROBOTSTXT_OBEY,由true变为false 2.设置DEFAULT_REQUEST_HEADERS,将其改为request headers 3.根据请求链接,发出第一个请求,设置一 ...
- Python+Requests+异步线程池爬取视频到本地
1.本次项目为获取梨视频中的视频,再使用异步线程池下载视频到本地 2.获取视频时,其地址中的Url是会动态变化,不播放时src值为图片的地址,播放时src值为mp4格式 3.查看视频链接是否存在aja ...
- 使用redis所维护的代理池抓取微信文章
搜狗搜索可以直接搜索微信文章,本次就是利用搜狗搜搜出微信文章,获得详细的文章url来得到文章的信息.并把我们感兴趣的内容存入到mongodb中. 因为搜狗搜索微信文章的反爬虫比较强,经常封IP,所以要 ...
- 使用requests、BeautifulSoup、线程池爬取艺龙酒店信息并保存到Excel中
import requests import time, random, csv from fake_useragent import UserAgent from bs4 import Beauti ...
- 使用requests、re、BeautifulSoup、线程池爬取携程酒店信息并保存到Excel中
import requests import json import re import csv import threadpool import time, random from bs4 impo ...
- 代理池抓取基础版-(python协程)--抓取网站(西刺-后期会持续更新)
# coding = utf- __autor__ = 'litao' import urllib.request import urllib.request import urllib.error ...
- 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...
随机推荐
- 【LeetCode】200. Number of Islands 岛屿数量
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目地址:https://le ...
- 1326 - Race
1326 - Race PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 32 MB Disky and S ...
- JVM调参
今天看了下之前做的一个异步处理任务的服务,发现占用内存量比较大,达到2G,但我检查了代码,基本没有static对象.但这个服务有个特点,就是每次执行一个任务的时候,会从数据库中捞大量的数据做处理,因此 ...
- 【C++】指针初始化
1.Node * p:if(p)//报错 2.Node * p=NULL;if(p)//不报错 注意把指针初始化,否则指针将指向任意位置
- JSON.parse 和 JSON.stringify 详解
JSON格式,(简写JavaScript Object Notation),是一种用于数据交换的文本格式,书写简单. 基于JavaScript原生语法,能够序列化对象.数组.数值.字符串.布尔值和 n ...
- Java初学者作业——使用记事本编写Java程序
返回本章节 返回作业目录 需求说明: 使用记事本编写 Java 程序,输出"大家好!我的梦想是做一名 Java 高级工程师!". 为 Java 程序添加单行和多行注释以及文档注释. ...
- Kafka版本介绍Version2.4.0
1.说明 Kafka的版本从0.11.0.X到1.0.X, 再到2.0.X大版本, 其实没有经过几个版本, 只是版本号变化较大. 2.最新发布版本 截止本文章2020年2月22号发布时, Kafka ...
- Eclipse导入Zookeeper源码Version2017.11.3
将Zookeeper源码导入Eclipse, Zookeeper源码需要使用ant构建后才能导入Eclipse, 和Solr的源码一样也是使用ant构建的, 大部分可以参考Eclipse导入Solr源 ...
- [Docker] 制作并运行 Nginx 镜像
环境 操作系统(cat /etc/redhat-release):CentOS Linux release 7.6.1810 (Core) Docker:18.09.6 文件 Dockerfile F ...
- UVA 10815 Andy's First Dictionary (C++ STL map && set )
原题链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...