day073 项目_IT橘子爬虫

今天,做了一个爬虫的新项目——IT桔子(www.itjuzi.com/company)的信息爬取.

  • IT桔子是关注IT互联网行业的结构化的公司数据库和商业信息提供商

    IT桔子致力于通过信息和数据的生产、聚合、挖掘、加工、处理,帮助目标用户和客户节约时间和金钱、提高效率,以辅助其各类商业行为,包括风险投资、收购、竞争情报、细分行业信息、国外公司产品信息数据服务等。

itjuzi首页.png

  • 所以IT桔子网站的信息是很有商业价值的,是有爬取需求的。当然,也是有一定爬取难度的, 网站对一般正常客户(非会员),都进行了限制访问处理,一般的反反爬措施是都要上的,如user-agent,host,cookies等对request对象请求头的设置,随机ip代理等;页面的html代码是动态HTML的,所以直接爬取拿不到数据,需要考虑使用selinium模拟Chrome浏览器,等待渲染完之后再提取数据;而且,不同的详情页面的HTML代码还有不同的代码格式,需要在测试的过程中不断地增强爬虫代码的健壮性等等。

步骤

  1. 明确目标数据,详情页的:(items.py)

    a.公司简介:company_name ;company_slogan; company_link; company_tags

    b.公司基本信息:company_info; company_full_name; create_time; company_size; company_status

    c.融资情况:invest_list (列表结构,每一个元素是一个字典,存放一次融资记录)

    d.团队信息:team_list (列表结构,每一个元素是一个字典,存放一个负责人信息)

    e.产品信息:product_list(列表结构,每一个元素是一个字典,存放一个产品的信息)

  2. 分析网站的爬取思路:

    a.信息都在详情页,只需要更改url尾缀数字即可;
    b.因为有的是静态页面有的是动态页面,所以要使用,selenium工具模拟chrome浏览器访问;
    c.登录后才可以请求完整信息,要模拟登陆/携带cookies信息访问
    d.html页面结构不一致,增加判断语句,增强爬虫代码的健壮性
    e.遇到其他问题,根据具体情况分析,解决问题

  3. 选择框架,scrapy;选择模块,spider/crawl_spider都可以

  4. 爬取一页数据(itjuzi.py)
  5. 解析数据(itjuzi.py)
  6. 存储数据,测试爬取结果的正确性(pipelines.py, settings.py)
  7. 开启循环,正式爬取

spider模块爬取

items.py


import scrapy


class JuziItem(scrapy.Item):
    # 1.公司简介
    company_name = scrapy.Field()
    company_slogan = scrapy.Field()
    company_link = scrapy.Field()
    company_tags = scrapy.Field()

    # 2.公司基本信息
    company_info = scrapy.Field()
    company_full_name = scrapy.Field()
    create_time = scrapy.Field()
    company_size = scrapy.Field()
    company_status = scrapy.Field()

    # 3. 融资
    invest_list = scrapy.Field()
    # 4. 团队信息
    team_list = scrapy.Field()
    # 5. 产品信息
    product_list = scrapy.Field()

    url_link = scrapy.Field()

    # 数据源
    data_source = scrapy.Field()
    data_time = scrapy.Field()

itjuzi.py

# -*- coding: utf-8 -*-
import scrapy
from bs4 import BeautifulSoup
from ITJuzi.items import JuziItem


class JuziSpider(scrapy.Spider):
    name = 'itjuzi'
    allowed_domains = ['itjuzi.com']

    base_url = 'https://www.itjuzi.com/company/'
    offset = 1
    start_urls = [base_url + str(offset)]

    headers = {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Cache-Control": "max-age=0",
        "Connection": "keep-alive",
        "Cookie": "gr_user_id=8b2a0647-ed6e-4da9-bd79-0927840738ba; _ga=GA1.2.1065816449.1520818726; MEIQIA_EXTRA_TRACK_ID=11oNlg9W4BPRdVJbbc5Mg9covSB; _gid=GA1.2.1051909062.1524629235; acw_tc=AQAAADMxgTrydgkAxrxRZa/yV6lXP/Tv; Hm_lvt_1c587ad486cdb6b962e94fc2002edf89=1524629235,1524637618,1524702648; gr_session_id_eee5a46c52000d401f969f4535bdaa78=5ac2fdfd-b747-46e3-84a3-573d49e8f0f0_true; identity=1019197976%40qq.com; remember_code=N8cv8vX9xK; unique_token=498323; acw_sc__=5ae1302fee977bcf1d5f28b7fe96b94d7b5de97c; session=e12ae81c38e8383dcaeaaff9ded967758bc5a01c; Hm_lpvt_1c587ad486cdb6b962e94fc2002edf89=1524707391",
        "Host": "www.itjuzi.com",
        "If-Modified-Since": "Thu, 26 Apr 2018 01:49:47 GMT",
        "Upgrade-Insecure-Requests": "1",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36",

    }

    # 设置cookie登录的验证
    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url=url, callback=self.parse, headers=self.headers)

    def parse(self, response):

        # 解析数据
        soup = BeautifulSoup(response.body, 'lxml')
        item = JuziItem()
        item['url_link'] = response.url
        # 1.公司简介
        # cpy1 = soup.find(attrs={'class':"infoheadrow-v2"})
      
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值