最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

百度收录批量查询Python版(Request+Xpath)

XAMPP相关 中文小张 1658浏览 0评论

项目需求:
有成千上万个域名,想查询哪些域名已经被百度收录,收量的页面数量有多少?

直接找网上的代码改了一下,基本满足需求了,运行界面如下:

将被百度收录的域名保存下来:

最开始在网上找的是通过”http://www.baidu.com/s?wd=”的方式来查询百度收录的,不过这种方式查询的百度收录准确率只有90%多,有些用site命令查找并没有收录的网站也会被误判为收录,而且无法取到百度的收录量。后来通过抓取site页面结果的方式,可以准确地取到收录量,而且数据也精确了。

运行代码时,第一次我将sleep设为3秒,跑了一个晚上没问题,第二天到10点多钟卡住不动了。第二次晚上开跑,跑了2个多小时,又卡在那儿不动了。估计是查询太过频繁IP被百度禁止了。

由于是自己用的,我两种方式的代码都保存了下来,所以下面的代码变成了一个大杂烩。其实真要用的话,拿check_index_number这个函数稍微改改就可以了,可以精简很多代码。

1 import requests
2 import time
3 from random import randint
4 from lxml import etree
5
6 HEADERS = {
7     "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
8     "X-Forwarded-For": '%s:%s:%s:%s' % (randint(1, 255),
9                                         randint(1, 255), randint(1, 255), randint(1, 255)),
10     "Content-Type": "application/x-www-form-urlencoded",
11     "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
12     "Connection": "keep-alive"}
13
14
15
16 def check_index_number(url):
17     """
18     查询网址被百度收录的数量
19     :param url: 要查询的网址
20     :return: 返回被百度收录的数量
21     """
22     url_a = 'https://www.baidu.com/s?wd=site%3A'
23     url_b = '&pn=1&oq=site%3A52pojie.cn&ie=utf-8&usm=1&rsv_idx=1&rsv_pq=dd6157d100015d1f&rsv_t=9a3eHncH3YeAeoblNqMm1f3%2FAQsJeSgF03XLXg6VDz6VqSprqUL8lGGO3us'
24     joinUrl = url_a + url + url_b
25     # print joinUrl   #拼接URL
26     html_Doc = requests.get(joinUrl, headers=HEADERS)
27     response = etree.HTML(html_Doc.content)
28     try:
29         index_number = response.xpath('//*[@id="1"]/div/div[1]/div/p[3]/span/b/text()')[0]
30     except:
31         index_number = 0
32         pass
33     return index_number
34
35
36 def getUrl(filepath):
37     with open(filepath, "r") as f:
38         f = f.readlines()
39     return f
40
41
42 def getHtml(url):
43     try:
44         r = requests.get(url)
45         r.raise_for_status()
46         r.encoding = r.apparent_encoding
47         return r.text
48     except:
49         return ""
50
51
52 def isindex(link):
53     url = link.replace("http://", "").replace("/", "%2F")
54     url = "http://www.baidu.com/s?wd=" + url
55     html = getHtml(url)
56     with open("result.txt", 'a') as f:
57         if "很抱歉,没有找到与" in html or "没有找到该URL" in html:
58             print(link, "未收录")
59         else:
60             print(link, "收录")
61             indexed_number  = check_index_number(link)
62             f.write(link+'\t'+str(indexed_number)+'\n')
63
64
65
66 def main():
67     filepath = "20181105-new.txt"  # 待查询的URL链接文本,一行一个
68     urls = getUrl(filepath)
69     for url in urls:
70         url = url.strip()
71         try:
72             isindex(url)
73         except:
74             pass
75         time.sleep(2)
76
77
78 if __name__ == '__main__':
79     main()

转载请注明:XAMPP中文组官网 » 百度收录批量查询Python版(Request+Xpath)

您必须 登录 才能发表评论!