这两天需要对公众号的信息进行爬取,原以为只是爬取信息,而不需要怕公众号,会比较简单,所以尝试了:
littlecodersh的ItChat
可以获取公众号的名称、功能描述以及地区,但并没有把公众号的ID以及认证公司等信息集成进去,而且必须要本人关注之后才能处理;
搜狗微信
搜狗微信的信息倒是齐全,完全可以满足要求,但是尝试了request+BeatifulSoup还有Selenium之后发现,这个网址真的太小气了,我加了延时,用了代理,依然各种被封,或者是要求输入验证码;
新榜
只能获取已经收录的公众号信息,好在收录的数量也很多,用request会出现搜索失败,但是用Selenium还是稳的,加了延时,顺利获取了几千条数据。而且,这里还可以查到各个行业时下最热文章、阅读量等等信息。
用selenium爬取代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| from selenium import webdriver
from selenium.webdriver.common.keys import Keys import time import csv
def store_data(name,description,company): writer.writerow((name,description,company)) def get_id(name): driver.find_element_by_id('txt_account').clear() time.sleep(3) driver.find_element_by_id('txt_account').send_keys(name) driver.find_element_by_id('txt_account').send_keys(Keys.ENTER) time.sleep(10) description = driver.find_element_by_class_name('wx-description-info').text company = driver.find_element_by_class_name('auth-span').text store_data(name,description,company) time.sleep(30)
driver = webdriver.Firefox()
driver.get('https://www.newrank.cn/')
error_name = [] csvfile = open('公众号信息.csv','a+') writer = csv.writer(csvfile) for name in id_list: idx = id_list.index(name) lenght = len(id_list) try: if idx%10 == 0: print(f'{idx+1}/{lenght} is working...') get_id(name) except: error_name.append(name) csvfile.close()
|
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。