这个不难吧,没爬过,稍微看了一下,网页数据在源代码中(不过未登录状态看不到完整数据)。一步一步请求就行了,先请求搜索页,拿到公司列表信息(每个公司页面的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
|