エージェント西刺ipを這い出す
1662 ワード
西刺からエージェントipを這い出すことができる小さな爬虫類を書いて、もともとipエージェントのテストとエージェントの爬虫類を加えてウェブサイトを這い出すことができて、しかしエージェントipはずっと無効で、どんな原因なのか分からないで、次回きっと完備します
lengthは上位ページのipを決定し、lengthのサイズを自由に決定できます
正規表現でipアドレスとポート番号を抽出し、httpsのipを地域でフィルタリングする
爬取中のipからランダムに1つ選択
# -*- coding: UTF-8 -*-
import requests
import re
import random #
from multiprocessing import Pool #
from requests.exceptions import RequestException
def get_one_page(url):
try:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3278.0 Safari/537.36'}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
except RequestException:
return None
lengthは上位ページのipを決定し、lengthのサイズを自由に決定できます
def get_url_list(url,length=3):
print('proxy ip download the first %d pages:' %length)
urllist = []
for i in range(1, length):
urllist.append(url[:-1] + str(i))
return urllist
正規表現でipアドレスとポート番号を抽出し、httpsのipを地域でフィルタリングする
def extractip(html):
pattern = re.compile('((?.*?(.*?).*?href.*?>(.*?).*?HTTP',re.S)
items = re.findall(pattern, html)
return items
爬取中のipからランダムに1つ選択
def rangeip(listip):
return random.sample(listip,1)
def main():
biglistip = []
getipurl = 'http://www.xicidaili.com/nn/1'
urllist = get_url_list(getipurl)
for url in urllist:
html = get_one_page(url)
items = extractip(html)
for item in items:
biglistip.append(item)
print(rangeip(biglistip))
if __name__ == '__main__':
main()