加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python数据可视化:Python大佬有哪些?

发布时间:2018-12-01 02:27:56 所属栏目:教程 来源:法纳斯特
导读:有态度地学习 之前讲了代理池以及Cookies的相关知识,这里针对搜狗搜索微信公众号文章的爬取,将它俩实践一下。 在崔大的书里面,他是用代理IP来应对搜狗的反爬措施,因为同一IP访问网页过于频繁,就会跳转验证码页面。 不过时代在进步,搜狗搜索的反爬也

2 获取网页信息

  1. def get_message(): 
  2.     """ 
  3.     获取网页相关信息 
  4.     """ 
  5.     failed_list = [] 
  6.     for i in range(1, 101): 
  7.         print('第' + str(i) + '页') 
  8.         print(float(random.randint(15, 20))) 
  9.         # 设置延时,这里是度娘查到的,说要设置15s延迟以上,不会被封 
  10.         time.sleep(float(random.randint(15, 20))) 
  11.         # 每10页换一次SNUID值 
  12.         if (i-1) % 10 == 0: 
  13.             value = get_cookies_snuid() 
  14.             snuid = 'SNUID=' + value + ';' 
  15.         # 设置Cookies 
  16.         cookies = cookie + snuid 
  17.         url = 'http://weixin.sogou.com/weixin?query=python&type=2&page=' + str(i) + '&ie=utf8' 
  18.         host = cookies + 'n' 
  19.         header = head + host 
  20.         headers = str_to_dict(header) 
  21.         # 设置代理IP 
  22.         proxies = get_proxies(i) 
  23.         try: 
  24.             response = requests.get(url=url, headers=headers, proxies=proxies) 
  25.             html = response.text 
  26.             soup = BeautifulSoup(html, 'html.parser') 
  27.             data = soup.find_all('ul', {'class': 'news-list'}) 
  28.             lis = data[0].find_all('li') 
  29.             for j in (range(len(lis))): 
  30.  
  31.                 h3 = lis[j].find_all('h3') 
  32.                 #print(h3[0].get_text().replace('n', '')) 
  33.                 title = h3[0].get_text().replace('n', '').replace(',', ',') 
  34.  
  35.                 p = lis[j].find_all('p') 
  36.                 #print(p[0].get_text()) 
  37.                 article = p[0].get_text().replace(',', ',') 
  38.  
  39.                 a = lis[j].find_all('a', {'class': 'account'}) 
  40.                 #print(a[0].get_text()) 
  41.                 name = a[0].get_text() 
  42.  
  43.                 span = lis[j].find_all('span', {'class': 's2'}) 
  44.                 cmp = re.findall("d{10}", span[0].get_text()) 
  45.                 #print(time.strftime("%Y-%m-%d", time.localtime(int(cmp[0]))) + 'n') 
  46.                 date = time.strftime("%Y-%m-%d", time.localtime(int(cmp[0]))) 
  47.  
  48.                 with open('sg_articles.csv', 'a+', encoding='utf-8-sig') as f: 
  49.                     f.write(title + ',' + article + ',' + name + ',' + date + 'n') 
  50.             print('第' + str(i) + '页成功') 
  51.         except Exception as e: 
  52.             print('第' + str(i) + '页失败') 
  53.             failed_list.append(i) 
  54.             continue 
  55.     # 获取失败页码 
  56.     print(failed_list) 
  57.  
  58.  
  59. def main(): 
  60.     get_message() 
  61.  
  62.  
  63. if __name__ == '__main__': 
  64.     main() 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读