首页 > 其他分享 >scrapy(2)

scrapy(2)

时间:2024-05-22 18:19:16浏览次数:22  
标签:url self list scrapy div data response

import requests
from lxml import etree

class Houst(object):
    def __init__(self):
        self.url = "https://yibin.lianjia.com/ershoufang/pg{}/"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0"
        }

    def get_url_list(self):
        url_list = []
        for num in range(1, 11):
            url_list.append(self.url.format(num))
        return url_list

    def get_data_index(self, url):
        response = requests.get(url, headers=self.headers)
        response.encoding = "utf-8"
        if response.status_code == 200:
            return response.text
        else:
            return None

    def parse_data_index(self, response):
        html = etree.HTML(response)
        # 找ul标签下面全部的li标签
        data_list = html.xpath('//ul[@class="sellListContent"]//li[@class="clear LOGVIEWDATA LOGCLICKDATA"]')
        for data in data_list:
            title = data.xpath('./div[1]/div[1]/a/text()')[0]
            info = data.xpath("./div[1]/div[3]/div[1]/text()")[0]
            number = data.xpath("./div[1]/div[4]/text()")[0]
            # 抓详情页地址
            detail_url = data.xpath('./div[1]/div[1]/a/@href')[0]
            # 向详情页发送请求,获取数据
            detail_resp = self.get_data_index(detail_url)
            # 解析详情页数据
            detail_html = etree.HTML(detail_resp)
            data_time = detail_html.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[1]/span[2]/text()')[0]
            print(title, info, number, data_time)
        print("*-*-*-*-"*20)

    def main(self):
        for url in self.get_url_list():
            response = self.get_data_index(url)
            self.parse_data_index(response)


if __name__ == '__main__':
    spider = Houst()
    spider.main()

标签:url,self,list,scrapy,div,data,response
From: https://www.cnblogs.com/tudoot/p/18206846

相关文章

  • 案例02--scrapy综合练习--中大网校
    一抓取需求#抓取需求start_url='http://ks.wangxiao.cn/'抓取首页各分类下--->各种考试--->考点练习里各科目的练习题eg:工程类--->一级建造师--->建设工程经济--->章节#存储需求:文件存储题目中可能包含图片md格式比较合适按照分类依次存为......
  • 18--Scrapy04--CrawlSpider、源码模板文件
    Scrapy04--CrawlSpider、源码模板文件案例:汽车之家,全站抓取二手车的信息来区分Spider和CrawlSpider注意:汽车之家的访问频率要控制一下,要不然会跳验证settings.py中设置DOWNLOAD_DELAY=3一、常规Spider#spiders/Ershou.pyimportscrapyfromscrapy.linkextra......
  • Learning-Scrapy-中文版(一)
    LearningScrapy中文版(一)零、序言序言第1章Scrapy介绍第2章理解HTML和XPath第3章爬虫基础第4章从Scrapy到移动应用第5章快速构建爬虫第6章Scrapinghub部署第7章配置和管理第8章Scrapy编程第9章使用Pipeline第10章理解Scrap......
  • Learning-Scrapy-中文版(三)
    LearningScrapy中文版(三)八、Scrapy编程到目前为止,我们创建爬虫的目的是抓取数据,并提取信息。除了爬虫,scrapy可以让我们微调它的功能。例如,你会经常碰到以下状况:你在同一个项目的爬虫间复制粘贴了很多代码。重复的代码更多是关于处理数据,而不是关于数据源。你必须写脚本,好......
  • Learning-Scrapy-中文版(二)
    LearningScrapy中文版(二)三、爬虫基础本章非常重要,你可能需要读几遍,或是从中查找解决问题的方法。我们会从如何安装Scrapy讲起,然后在案例中讲解如何编写爬虫。开始之前,说几个注意事项。因为我们马上要进入有趣的编程部分,使用本书中的代码段会十分重要。当你看到:$echohell......
  • Scrapy的基础使用(1)
    Scrapy什么是scrapy​ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。创建爬虫项目​ scrapy是一个爬虫框架,创建项目与日常新建文件编写代码不同,他需要通过终端创建,在终端中输入下面语句创建......
  • 15--Scrapy01:介绍与初步使用
    Scrapy01--基本介绍与初步使用一、爬虫工程化何为工程化,就是让你的程序更加的有体系,有逻辑,更加的模块化.到目前为止,我们所编写的爬虫我们都是从头到尾的每一步都要亲力亲为.这样做固然有其优点(可控性更好),但是各位请认真思考.这样的代码逻辑是不能形成批量生产的效果的(写10......
  • scrapy使用
    创建cdxxscrapystartproject<文件夹名>[dir]cd文件目录scrapygenspider<文件名><域名>scrapycrawl<文件名>spiders定义的详细爬取规则items爬取的数据结构middlewares中间件pipelines数据管道,负责持久存储和清洗:存取mongodclassMongoDBPip......
  • scrapy 介绍,架构介绍(框架)
     scrapy介绍 #1通用的网络爬虫框架,爬虫界的django#2scrapy执行流程5大组件-引擎(EGINE):大总管,负责控制数据的流向-调度器(SCHEDULER):由它来决定下一个要抓取的网址是什么,去重-下载器(DOWLOADER):用于下载网页内容,并将网页内......
  • scrapy框架之CrawlSpider全站爬取
    一、什么是全站爬取全站爬取(CrawltheEntireSite)是指通过网络爬虫程序遍历并获取一个网站上的所有页面或资源的过程。这种爬取方式旨在获取网站的全部内容,包括文本、图片、视频、链接等,以建立网站的完整内容索引或进行数据分析。二、全栈爬取介绍1、全站数据爬取的方式(1)通过......