因为微信公众号可以在搜狗里面搜索到,所以我们就用搜狗微信搜里面进行爬取。
先看我们需要的库
import requests
import time
from bs4 import BeautifulSoup
然后我们需要header头所以。要给他一个。怎么获取呢,网上很多。
head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4882.400 QQBrowser/9.7.13039.400',
'Connection': 'keep-alive'}
我们在搜狗微信搜索一下。我是互联网你们自己随意。
按f12锁定。然后找到他的位置。找到div class=txt-box这一项。
然后在找到a 里面的href 就可以得到这个链接的网址。
标题名 .text就可以获取。
但是通过requests.get获取到的链接是。不正确的,实战之后就会发现。和点进去之后的真实地址,
其中多了很多amp;这样的字符。
我们通过.replace()的函数来进行处理。这样就是真实的地址了。
通过open函数write函数,把我们的字符串写进去就可以了。
下面是我们的代码:
import requests
import time
from bs4 import BeautifulSoup
head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4882.400 QQBrowser/9.7.13039.400',
'Connection': 'keep-alive'}
key='互联网'
pagecode='&page='
for page in range(1,10):
fh=open("微信第{}页.txt".format(page),"w")
try:
print("正在输入第{}页".format(page))
urls = "http://weixin.sogou.com/weixin?type=2&query="+str(key)+str(pagecode)+str(page)
aaa=requests.get(url = urls,headers=head).text
data = BeautifulSoup(aaa,"lxml")
sp=data.find_all("div",{'class':'txt-box'})
for data1 in sp:
neirong=data1.find_all("a")[0]
wzhi1=neirong.get('href')
wzhi1=wzhi1.replace("amp;",'')
net1=data1.find_all("a")[0].text
data3=net1+'\n'+wzhi1+'\n\n\n\n'
fh.write(data3)
print("第{}页输入成功".format(page))
except:
print("第{}页输入失败,再来一次。".format(page))
page=page-1
time.sleep(4)
fh.close
然后就是我们的结果了。
其中要是有什么问题,比如如何找到这个链接的位置,可以留言评论。我解释的比较少,可以问,一起学习,我也在学习。
![](https://i-blog.csdnimg.cn/blog_migrate/c958eb33498a6384e3cf81a92771ddc2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c5bb971713f073c6a15118aee186a411.png)