日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


python:教你用爬蟲通過代理自動刷網頁的瀏覽量

 

 

前言

每當看到幾十萬的閱讀量的文章后面區區幾個評論, 心中就在想, 難道大家現在都這么懶了嗎? 但是有些文章閱讀量不高, 評論為什么這么多呢?

我想這些應該都是刷的, 不光瀏覽量是刷的, 甚至那些無厘頭的評論都是刷的。有人要問了, 你憑什么說別人刷的評論呢? 難道評論還可以刷? 我想說是的。

比如:我們在瀏覽微博的時候,會經常發現一件事, 怎么每個微博下面都有這個人的小廣告呢? 難道這人都這么閑嗎? 一個人閑也就罷了, 怎么這么多人都閑?可以在大量的微博下面評論大量的小廣告, 并且點贊還非常多。具體是不是刷的,自己做判斷就好了。

今天教大家的是, 用爬蟲通過代理來增加網頁的瀏覽量。以下是干貨↓

思路

一、怎么獲取大量的代理IP?

給大家推薦一個網站https://www.xicidaili.com/ , 看到下面的圖片, 應該明白我們要做什么了吧。我們可以寫一個爬蟲去抓取這些IP。

 

python:教你用爬蟲通過代理自動刷網頁的瀏覽量

 

 

但是, 在實際運行的時候, 發現了一個問題, 我怎么才能知道這些IP有用, 并且代理設置成功了呢? 當然, 也是有解決方案的,我們可以用代理訪問這個網站http://httpbin.org/ip ,如果不正常會拋出異常, 如果是正常的就會返回如下信息

  •  
{
 "origin": "106.38.91.34, 106.38.91.34"
}

廢話不多說,直接上代碼:

  •  
from bs4 import BeautifulSoup
import requests
import random
import time
def download_page(url):
 print(url)
 try:
 #User Agent中文名為用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、
 #瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
 header = {
 "User-Agent":"Mozilla/5.0 (windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/59.0.3071.104 Safari/537.36"
 }
 data = requests.get(url,headers=header).text
 except HTTPError as err:
 print(err.__traceback__)
 except ConnectionError as err:
 print(err.__traceback__)
 except TimeoutError as err:
 print(err.__traceback__)
 return data
#獲取當前首頁的內容
def parse_proxy_html(html):
 try:
 #解析器html.parser lxml xml html5lib
 soup = BeautifulSoup(html, 'lxml')
 find_all = soup.find_all('tr')
 f = open("proxy", "w")
 for find_tr in find_all:
 find_tds = find_tr.find_all('td')
 if len(find_tds) == 0:
 continue
 ip_temp = find_tds[1].contents[0]+":"+find_tds[2].contents[0]
 try:
 #隨機模擬一個用戶
 user_agent = {'User-Agent':random.choice(agent_list)}
 #隨機獲取一個代理ip
 proxies = {'http':ip_temp}
 #這樣寫沒有問題,但是抓取出來的ip大都沒有用
 #判斷代理ip是否有用,只保存有用的代理ip,兩秒不響應就算無效的ip
 targetUrl = 'http://httpbin.org/ip'
 resp = requests.get(targetUrl, headers=user_agent,proxies=proxies,timeout=2)
 print(resp.status_code)
 print(resp.text)
 print('~~有效的~~代理ip和端口號%s'%ip_temp)
 f.write(ip_temp+"n")
 except Exception as e:
 print('~~異常:%s'%e) 
 print('~~無效的~~代理ip和端口號%s'%ip_temp)
 #獲取下個頁面地址
 next_a = soup.find('a',attrs={'rel': 'next'})
 if next_a is None:
 print("~~None~~~")
 return "";
 return next_a['href']
 except Exception as ex:
 print('抓取信息異常:'+ex)
#首頁數據抓取
HTTP = 'https://www.xicidaili.com'
def to_proxy_page():
 download_url = '/wt/1'
 num = 1
 while download_url != 'JAVAscript:;' and download_url!='':
 if num == 3:
 print('~~~~夠用了~~不抓取了~~~')
 break
 print("第%d次請求地址:%s"%(num,download_url));
 #隨機停頓幾秒
 i = random.randint(1, 3)
 time.sleep(i)
 #獲取頁面信息
 html = download_page(HTTP + download_url)
 #解析和保存
 download_url = parse_proxy_html(html)
 num = num+1;
 
if __name__ == '__main__':
 to_proxy_page()

獲取到的代理地址格式如下(想要多少, 代碼自己設置下就好了):

163.204.243.4:9999

60.13.42.248:9999

二、通過代理地址去刷新網頁

可以先寫一個User-Agent列表, 模擬不同的瀏覽器信息。然后配置需要刷新的網頁就好了。

  •  
import random
import socket
import requests
#定義需要刷新的頁面集合
refreshPage_list = [
 #1062
 'https://blog.csdn.net/dujianxiong/article/details/80844652',
 #153
 'https://blog.csdn.net/super_DuoLa/article/details/90205512'
 ]
#定義User-Agent集合
agent_list = [
 #Win7:
 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
 #Win7:
 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0',
 #Win7:
 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
 #Win7:
 'Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50',
 #Win7+ie9:
 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; Tablet PC 2.0; .NET4.0E)',
 #Win7+ie8:
 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)',
 #WinXP+ie8:
 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.0)',
 #WinXP+ie7:
 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
 #WinXP+ie6:
 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',
 #傲游3.1.7在Win7+ie9,高速模式:
 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12',
 #傲游3.1.7在Win7+ie9,IE內核兼容模式:
 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)',
 #搜狗3.0在Win7+ie9,IE內核兼容模式:
 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)',
 #搜狗3.0在Win7+ie9,高速模式:
 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.33 Safari/534.3 SE 2.X MetaSr 1.0',
 #360瀏覽器3.0在Win7+ie9:
 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)',
 #QQ瀏覽器6.9(11079)在Win7+ie9,極速模式:
 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1 QQBrowser/6.9.11079.201',
 #QQ瀏覽器6.9(11079)在Win7+ie9,IE內核兼容模式:
 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E) QQBrowser/6.9.11079.201',
 #阿云瀏覽器1.3.0.1724 Beta(編譯日期2011-12-05)在Win7+ie9:
 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'
 ] 
#開始搞
def to_refresh_page():
 try:
 #獲取代理信息
 f = open("proxy",'r')
 lines = f.readlines()
 proxys = []
 for line in lines:
 ip = line.strip()
 proxys.append(ip)
 #每個頁面刷新10次
 for i in range(10):
 for url in refreshPage_list:
 #隨機模擬一個用戶
 user_agent = {'User-Agent':random.choice(agent_list)}
 #隨機獲取一個代理ip
 proxies = {'http':random.choice(proxys)}
 r = requests.get(url,headers=user_agent,proxies=proxies)
 print(r)
 print('刷新成功,請求地址url:%s返回狀態status:%s'%(url,r.status_code))
 except Exception as e:
 print('刷新頁面異常:%s'%e)
 
if __name__ == '__main__':
 to_refresh_page()

代碼中我加了很多注解,就不長篇大論了,如果有不明白的可以評論。

三、思考問題

在實際測試中,發現剛才還有效的代理IP,當去刷新網頁的時候就鏈接超時了呢?為什么請求了很多次,網頁的瀏覽量并沒有漲太多呢?

注: 文章所寫代碼僅用于技術交流

分享到:
標簽:爬蟲 python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定