一、功能简介
目标: 获取目标企业的法人等信息。
输出:保存到文件/打印到控制台
技术路线: urllib--re
语言:python3
二、资源
爬取网站:www.tianyancha.com
三、原理
步骤1: python获取“https://www.tianyancha.com/search?key=公司名”的网页源码;
步骤2: 将网页源码中,通过关键字“CompanySearch.Company”定位到公司介绍的链接地址,注意要做公司名的完整匹配;
步骤3: python获取新链接页面的源码,通过关键字找到企业信息。
四、具体步骤
1、登陆www.tianyancha.com,在搜索栏输入企业的完整名称,如“北京知乎科技有限责任公司”,观察搜索结果的地址有什么规则。发现规律,地址栏后面是要搜索的公司名称。
2、打开这个公司的链接,同样观察地址有什么规律。发现规律,通过一串数字来对应该公司。同时在不登陆天眼查的情况下,可以看到了网址。
3、分析网址的这一串数字从哪里来的。复制这个数字,在上一个网页的源码中去找。发现源码中已经包含了完整地址。
4、分析发现 关键字“CompanySearch.Company”就能匹配到唯一的网址。(数字网址)
5、分析该网页源码,发现关键字法定代表人 “company-link”可以定位到我们想要的公司网址
五、项目核心代码
#Code1:获得需要爬虫的网站网址,构建浏览器伪装池,将爬虫伪装成浏览器,避免被网站屏蔽
chinaCompany="重庆长安汽车股份有限公司"
testUrl="https://www.tianyancha.com/search?key="+chinaCompany
print("visit web:"+testUrl)
# 在请求网页爬取的时候,输出的text信息中会出现抱歉,无法访问等字眼,这就是禁止爬取,需要通过反爬机制去解决这个问题。
# headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。
# 对反爬虫网页,可以设置一些headers信息,模拟成浏览器取访问网站 。
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
#Code2:爬取第一个页面,即搜索企业名字,获得访问企业信息的跳转链接
def getStockList(lst, stockURL):
searchCompanyRet=urllib.request.urlopen(testUrl).read().decode("utf-8", "ignore")
matchPat='tyc-event-ch="CompanySearch.Company".*?href="(.*?)" target='
nextUrls = re.compile(matchPat, re.S).findall(searchCompanyRet)
nextUrl = nextUrls[0]
print("企业详细信息可以查看下一个链接:" + str(nextUrl))
#Code:爬取第二个页面,即查看企业详细信息
companyDetail=urllib.request.urlopen(nextUrl).read().decode("utf-8", "ignore")
matchPat = '<td>法定代表人</td><td><a class="link-click".*?>(.*?)</a>.*?rel'
faren = re.compile(matchPat, re.S).findall(companyDetail)
print(“企业<” + chinaCompany + “>的法人:” + str(faren[0]))
matchPat = 'class="company-link".*?href="(.*?)".*?rel'
companyUrl = re.compile(matchPat, re.S).findall(companyDetail)
print(“企业<” + chinaCompany + “>的官网地址:” + str(companyUrl[0]))