爬虫之爬取网页表格数据(二)

爬虫之爬取网页数据

###环境:Anaconda2虚拟环境

  • 步骤1

打开Anaconda Prompt命令行窗口,输入conda activate tfenv激活虚拟环境,进入所要创建爬虫项目的文件夹,比如说我在F:\hadoop\python-project目录下创建爬虫项目。输入scrapy startproject firstspider创建firstspider项目当结果显示如上图,则代表爬虫项目创建成功。

  • 步骤2
    在pycharm中打开刚新建的项目,目录结构如图所示在这里插入图片描述
    spiders:这里面写爬虫程序
    items:写实体( python类)
    middlewares:中间件( 修改代理、使用IP池等)
    pipelines:管道,写存储数据的代码
    settings:配置爬虫的行为

选择编译器,在这里我选的是虚拟环境下的编译器
选好之后,点击Apply应用

  • 步骤3
    判断所要爬取的网站是否可爬,在Anaconda Prompt 的项目下,输入scrapy view https://bj.lianjia.com/ershoufang/,这里我用的是链家网的网址。当命令运行结束后,就会在浏览器端打开链家网,如图所示
    在这里插入图片描述
    地址栏显示在本地C盘,这表示该网站可爬。
    scrapy view可以将网页下载到本地,这个网页就是爬虫看到的页面。注意:爬虫看到的页面与直接到目标网站看到的页面有些是不相同的,因为有反爬虫处理。

  • 步骤4,确定要抓取的内容
    首先使用scrapy shell https://bj.lianjia.com/ershoufang/命令,调试所要抓取的内容
    成功
    返回200,打开链家网页
    在这里插入图片描述
    选取你要爬取的内容,比如说我要爬取房屋的标题,用xpath选择器
    在这里插入图片描述

response.xpath('//*[@id="content"]/div[1]/ul/li[1]/div[1]/div[1]/a/text()').extract_first()

在这里插入图片描述
可以看到,我们要的内容已经获取到了。

  • 步骤5写爬虫程序
    1、在spider目录下的example.py文件中,编写爬虫程序,如下:
import scrapy

from firstspider.items import FirstspiderItem

class ExampleSpider(scrapy.Spider):
    name = 'example'                        #爬虫程序名,可自己取
    allowed_domains = ['bj.lianjia.com']      #爬取网站的域名
    start_urls = ['https://bj.lianjia.com/ershoufang/']  #爬取的网站

    def parse(self, response):
        housename = response.xpath('//*[@id="content"]/div[1]/ul/li[1]/div[1]/div[1]/a/text()').extract_first()
        price = response.xpath('//*[@id="content"]/div[1]/ul/li[1]/div[1]/div[6]/div[1]/span/text()').extract_first()
        item = FirstspiderItem()            #创建一个Item实例
        item["housename"] = housename
        item["price"] = price
        return item

2、在items.py文件中写python实体类,如下:

import scrapy

class FirstspiderItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    housename = scrapy.Field()
    price = scrapy.Field()

3、设置管道,写存储数据的代码,如下:

class FirstspiderPipeline(object):
    def process_item(self, item, spider):
        with open("house.txt", "a") as f:
                content="{},{}\n".format(item["housename"],item["price"])
                f.write(content)

4、启用配置,在settings.py文件中,设置ROBOTSTXT_OBEY = False
在这里插入图片描述
和启用管道,将注释去掉,如下:
在这里插入图片描述
5、运行爬虫程序,命令为scrapy crawl example,可以在命令行窗口下运行,也可在pycharm中运行。如下是在pycharm中的项目终端下运行的在这里插入图片描述
运行完成后,可看到项目目录下多了一个house.txt文件,如图:

在这里插入图片描述
至此,简单的爬虫就完成了。

展开阅读全文
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值