这个不难吧,没爬过,稍微看了一下,网页数据在源代码中(不过未登录状态看不到完整数据)。一步一步请求就行了,先请求搜索页,拿到公司列表信息(每个公司页面的url),再请求公司页url,最后获取公司信息,可以按这个思路去爬。
不过这种网站如果请求太频繁应该都会遇到IP反爬,我稍微写了几句代码测试,暂时没遇到反爬。
- import requests
- from lxml import etree
- url = 'https://www.tianyancha.com/search?key=%E8%85%BE%E8%AE%AF'
- # 如果翻页,url就是'https://www.tianyancha.com/search/p' + 页码 + '?key=' + 关键词
- headers = {'user-agent': 'Mozilla/5.0'}
- res = requests.get(url, headers=headers) # 请求搜索页
- sel = etree.HTML(res.text)
- items = sel.xpath('//*[@class="search-item sv-search-company"]') # 获取公司列表
- for item in items:
- name = item.xpath('string(div/div[3]/div[1]/a)') # 公司名
- url_ = item.xpath('div/div[3]/div[1]/a/@href')[0] # 公司页url
- res1 = requests.get(url_, headers=headers) # 请求公司页
- sel1 = etree.HTML(res1.text)
- id_ = sel1.xpath('//*[@id="_container_baseInfo"]/table/tbody/tr[5]/td[2]/text()')[0] # 统一社会信用代码
- print(id_)
- break
复制代码