python 爬虫实例(四)

环境:

OS:Window10

python:3.7

爬取链家地产上面的数据,两个画面上的数据的爬取

效果,下面的两个网页中的数据取出来

代码

import datetime
import threading

import requests
from bs4 import BeautifulSoup

class LianjiaHouseInfo:

    ‘‘‘
        初期化变量的值
    ‘‘‘
    def __init__(self):
        # 定义自己要爬取的URL
        self.url = "https://dl.lianjia.com/ershoufang/pg{0}"
        self.path = r"C:\pythonProject\Lianjia_House"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}

    ‘‘‘
        访问URL
    ‘‘‘
    def request(self, param):

        # 如果不加的话可能会出现403的错误,所以尽量的都加上header,模仿网页来访问
        req = requests.get(param, headers=self.headers)
        # req.raise_for_status()
        # req.encoding = req.apparent_encoding
        return req.text
    ‘‘‘
        page設定
    ‘‘‘
    def all_pages(self, pageCn):
        dataListA = []
        for i in range(1, pageCn+1):
            if pageCn == 1:
                dataListA = dataListA + self.getData(self.url[0:self.url.find("pg")])
            else:
                url = self.url.format(i)
                dataListA = dataListA + self.getData(url)
        # self.dataOrganize(dataListA)
    ‘‘‘
       数据取得
    ‘‘‘
    def getData(self, url):
        dataList = []
        thread_lock.acquire()
        req = self.request(url)
        # driver = webdriver.Chrome()
        # driver.get(self.url)
        # iframe_html = driver.page_source
        # driver.close()
        # print(iframe_html)
        soup = BeautifulSoup(req, ‘lxml‘)
        countHouse = soup.find(class_="total fl").find("span")
        print("共找到 ", countHouse.string, " 套大连二手房")

        sell_all = soup.find(class_="sellListContent").find_all("li")
        for sell in sell_all:

            title = sell.find(class_="title")
            if title is not None:
                print("------------------------概要--------------------------------------------")
                title = title.find("a")
                print("title:", title.string)
                housInfo = sell.find(class_="houseInfo").get_text()
                print("houseInfo:", housInfo)
                positionInfo = sell.find(class_="positionInfo").get_text()
                print("positionInfo:", positionInfo)

                followInfo = sell.find(class_="followInfo").get_text()
                print("followInfo:", followInfo)

                print("------------------------詳細信息--------------------------------------------")
                url_detail = title["href"]
                req_detail = self.request(url_detail)
                soup_detail = BeautifulSoup(req_detail, "lxml")
                total = soup_detail.find(class_="total")
                unit = soup_detail.find(class_="unit").get_text()
                dataList.append(total.string+unit)
                print("总价:", total.string, unit)
                unitPriceValue = soup_detail.find(class_="unitPriceValue").get_text()
                dataList.append(unitPriceValue)
                print("单价:", unitPriceValue)
                room_mainInfo = soup_detail.find(class_="room").find(class_="mainInfo").get_text()
                dataList.append(room_mainInfo)
                print("户型:", room_mainInfo)
                type_mainInfo = soup_detail.find(class_="type").find(class_="mainInfo").get_text()
                dataList.append(type_mainInfo)
                print("朝向:", type_mainInfo)
                area_mainInfo = soup_detail.find(class_="area").find(class_="mainInfo").get_text()
                dataList.append(area_mainInfo)
                print("面积:", area_mainInfo)

            else:
                print("広告です")
        thread_lock.release()
        return dataList
    #
    # def dataOrganize(self, dataList):
    #
    #     data2 = pd.DataFrame(dataList)
    #     data2.to_csv(r‘C:\Users\peiqiang\Desktop\lagoujob.csv‘, header=False, index=False, mode=‘a+‘)
    #     data3 = pd.read_csv(r‘C:\Users\peiqiang\Desktop\lagoujob.csv‘, encoding=‘gbk‘)

thread_lock = threading.BoundedSemaphore(value=100)
house_Info = LianjiaHouseInfo()
startTime = datetime.datetime.now()
house_Info.all_pages(1)
endTime = datetime.datetime.now()
print("実行時間:", (endTime - startTime).seconds)

  运行之后的效果

原文地址:https://www.cnblogs.com/killclock048/p/10144576.html

时间: 2024-08-29 22:48:10

python 爬虫实例(四)的相关文章

Python爬虫利器四之PhantomJS的用法

前言 大家有没有发现之前我们写的爬虫都有一个共性,就是只能爬取单纯的html代码,如果页面是JS渲染的该怎么办呢?如果我们单纯去分析一个个后台的请求,手动去摸索JS渲染的到的一些结果,那简直没天理了.所以,我们需要有一些好用的工具来帮助我们像浏览器一样渲染JS处理的页面. 其中有一个比较常用的工具,那就是 PhantomJS Full web stack No browser required PhantomJS is a headless WebKit scriptable with a Ja

python爬虫实例详细介绍之爬取大众点评的数据

python 爬虫实例详细介绍之爬取大众点评的数据 一. Python作为一种语法简洁.面向对象的解释性语言,其便捷性.容易上手性受到众多程序员的青睐,基于python的包也越来越多,使得python能够帮助我们实现越来越多的功能.本文主要介绍如何利用python进行网站数据的抓取工作.我看到过利用c++和Java进行爬虫的代码,c++的代码很复杂,而且可读性.可理解性较低,不易上手,一般是那些高手用来写着玩加深对c++的理解的,这条路目前对我们不通.Java的可读性还可以,就是代码冗余比较多,

Python爬虫实战四之抓取淘宝MM照片

福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 最新动态 更新时间:2015/8/2 最近好多读者反映代码已经不能用了,原因是淘宝索引页的MM链接改了.网站改版了,URL的索引已经和之前的不一样了,之前可以直接跳转到每个MM的个性域名,现在中间加了一个跳转页,本以为可以通过这个页面然后跳转到原来的个性域名,而经过一番折腾发现,这个跳转页中的内容是JS动态生成的,所以不能用Urllib库来直接抓取了,本篇就只提供学习思路,代码不能继续用了. 之后博主会利用其它方

python爬虫实例(urllib&BeautifulSoup)

python 2.7.6 urllib:发送报文并得到response BeautifulSoup:解析报文的body(html) #encoding=UTF-8 from bs4 import BeautifulSoup from urllib import urlopen import urllib list_no_results=[]#没查到的银行卡的list list_yes_results=[]#已查到的银行卡的list #解析报文,以字典存储 def parseData(htmls,

转 Python爬虫入门四之Urllib库的高级用法

静觅 » Python爬虫入门四之Urllib库的高级用法 1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般

Python 爬虫实例

下面是我写的一个简单爬虫实例 1.定义函数读取html网页的源代码 2.从源代码通过正则表达式挑选出自己需要获取的内容 3.序列中的htm依次写到d盘 #!/usr/bin/python import re import urllib.request #定义函数读取html网页的源代码 def getHtml(url): page = urllib.request.urlopen(url) html = page.read() return html #从源代码通过正则表达式挑选出自己需要获取的

python爬虫实例——爬取歌单

学习自http://www.hzbook.com/index.php/Book/search.html 书名:从零开始学python网络爬虫 爬取酷狗歌单,保存入csv文件 直接上源代码:(含注释) import requests #用于请求网页获取网页数据 from bs4 import BeautifulSoup #解析网页数据 import time #time库中的sleep()方法可以让程序暂停 import csv ''' 爬虫测试 酷狗top500数据 写入csv文件 ''' fp

Python爬虫实例

前言 Python非常适合用来开发网页爬虫,理由如下:1.抓取网页本身的接口相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl,shell,python的urllib2包提供了较为完整的访问网页文档的API.(当然ruby也是很好的选择)此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的.这是我们需要模拟user agent的行为构造合适的请求,譬如模拟用户登陆.模拟session/cookie的存

Python爬虫知识点四--scrapy框架

一.scrapy结构数据 解释: 1.名词解析: o??引擎(Scrapy Engine)o??调度器(Scheduler)o??下载器(Downloader)o??蜘蛛(Spiders)o??项目管道(Item Pipeline)o??下载器中间件(Downloader Middlewares)o??蜘蛛中间件(Spider Middlewares)o??调度中间件(Scheduler Middlewares) 2.具体解析 绿线是数据流向??从初始URL开始,Scheduler会将其交给Do