Python技术栈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8296|回复: 100

[爬取案例] 普通用户的天眼查爬取

  [复制链接]

2

主题

2

帖子

28

积分

新手上路

Rank: 1

积分
28
发表于 2018-12-14 09:07:52 | 显示全部楼层 |阅读模式
[Python] 纯文本查看 复制代码
#-*- coding:utf-8 -*-
import requests
from lxml import etree
import json
import time
import random
from copy import deepcopy



class Tianyan():
    def __init__(self):

        self.url = 'https://www.tianyancha.com/search/ola3/p{}?key=%E6%B2%A7%E5%8E%BF%E5%A1%91%E6%96%99'
        self.headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36   (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
                        'Cookie':'TYCID=ac1dfec0298b11e896d65952088acd0e; undefined=ac1dfec0298b11e896d65952088acd0e; ssuid=5431237103; RTYCID=a9b338e6798d4eb39fef9257fd6b9b9d; aliyungf_tc=AQAAAMBzHiKiTwgAqo/Y3f5KVHsxjcZG; csrfToken=oqv83ZlWDQkY1v32arJAja4V; jsid=SEM-BAIDU-PP-SY-000214; Hm_lvt_e92c8d65d92d534b0fc290df538b4758=1522481067,1522487432,1522586369,1522586370; bannerFlag=true; tyc-user-info=%257B%2522token%2522%253A%2522eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxNTUzMDQ0OTM4OSIsImlhdCI6MTUyMjU4NjcxMywiZXhwIjoxNTM4MTM4NzEzfQ.lvI-NEDnqyN7eN_V4FFvMnsmf_2S8LvEr79r3xVutqXuIJ1F4VAkQk9DXasWiE9eC2dKGUsBG7ZyHSJpuuq-iw%2522%252C%2522integrity%2522%253A%25220%2525%2522%252C%2522state%2522%253A%25220%2522%252C%2522redPoint%2522%253A%25220%2522%252C%2522vipManager%2522%253A%25220%2522%252C%2522vnum%2522%253A%25220%2522%252C%2522onum%2522%253A%25220%2522%252C%2522mobile%2522%253A%252215530449389%2522%257D; auth_token=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxNTUzMDQ0OTM4OSIsImlhdCI6MTUyMjU4NjcxMywiZXhwIjoxNTM4MTM4NzEzfQ.lvI-NEDnqyN7eN_V4FFvMnsmf_2S8LvEr79r3xVutqXuIJ1F4VAkQk9DXasWiE9eC2dKGUsBG7ZyHSJpuuq-iw; Hm_lpvt_e92c8d65d92d534b0fc290df538b4758=1522586767'}
    def get_url_list(self):
        url_list = []
        for i in range(1,6):
            url = self.url.format(i)
            url_list.append(url)
        return url_list
    def parse_url(self,url):
        resp = requests.get(url,headers=self.headers)
        response = resp.content.decode()
        resp_html = etree.HTML(response)
        div_list = resp_html.xpath("//div[@class='b-c-white search_result_container']/div")
        url_content_list = []
        for div in div_list:
            item = {}
            id = div.xpath('./@data-id')[0]
            item['注册时间'] = div.xpath(".//div[@class='title overflow-width'][3]/span/text()")[0]
            item['url_content'] = 'https://www.tianyancha.com/company/'+ id
            url_content_list.append(item)
        return url_content_list
    def parse_content(self,url_content_list):
        content_list = []
        for item in url_content_list:
            url = item['url_content']
            resp = requests.get(url,headers=self.headers)
            response = resp.content.decode()
            resp_html = etree.HTML(response)
            item['公司名字'] = resp_html.xpath("//span[@class='f18 in-block vertival-middle sec-c2']/text()")
            item['地址'] = resp_html.xpath("//span[@class='in-block overflow-width vertical-top']/text()")
            item['经营范围'] =  resp_html.xpath("//span[@class='js-full-container ']//text()")
            item['法人'] = resp_html.xpath("//div[@class='f18 overflow-width sec-c3']//text()")
            item['注册号'] = resp_html.xpath("//table[@class='table companyInfo-table f14']/tbody/tr[1]/td[2]/text()")
            print(item)
            content_list.append(item)
        return content_list
    def save_content(self,content_list):
        with open('信息.txt','a+') as f:
            for content in content_list:
                f.write(json.dumps(content,ensure_ascii=False))
                f.write('\n')


    def run(self):
        url_list = self.get_url_list()
        for url in url_list:
            print(url)
            url_content_list = self.parse_url(url)
            content_list = self.parse_content(url_content_list)
            self.save_content(content_list)



if __name__ == '__main__':
    # login = Tylogin()
    # login.get_login()
    tianyan = Tianyan()
    tianyan.run()




只是简单的爬取了天眼查的数据,因为没有登录并且只是普通用户   所以只能查看前100条信息,根据注册时间排行,如果有需要,可以自行更改self.url或者更改代码使程序更加完善。本文不涉及到验证码处理和模拟登录。
Python 总 群
回复

使用道具 举报

0

主题

4

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2018-12-14 09:07:53 | 显示全部楼层
Python 总 群
回复

使用道具 举报

0

主题

7

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2018-12-14 10:29:26 | 显示全部楼层
占坑编辑ing
Python 总 群
回复

使用道具 举报

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2018-12-14 18:35:14 | 显示全部楼层
鄙视楼下的顶帖没我快,哈哈
Python 总 群
回复

使用道具 举报

0

主题

6

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2018-12-14 19:57:06 | 显示全部楼层
呵呵,低调,低调!
Python 总 群
回复

使用道具 举报

0

主题

8

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2018-12-14 21:10:09 | 显示全部楼层
确实不错,顶先
Python 总 群
回复

使用道具 举报

0

主题

5

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2018-12-14 21:26:28 | 显示全部楼层
支持,楼下的跟上哈~
Python 总 群
回复

使用道具 举报

0

主题

7

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2018-12-15 06:47:12 | 显示全部楼层
LZ是天才,坚定完毕
Python 总 群
回复

使用道具 举报

0

主题

4

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2018-12-15 14:27:11 | 显示全部楼层
占坑编辑ing
Python 总 群
回复

使用道具 举报

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2018-12-15 18:03:00 | 显示全部楼层
大人,此事必有蹊跷!
Python 总 群
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


QQ|Archiver|手机版|小黑屋|Python.BBS ( 鲁ICP备18046958号 )

GMT+8, 2020-1-25 23:39 , Processed in 0.219621 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表