무작위 교체 IP 설정
3471 단어 파이썬 파충류
# encoding: utf-8
import re
import requests
from scrapy.selector import Selector
import MySQLdb
conn = MySQLdb.connect(
host="localhost",
port=3306,
user="root",
passwd="1234",
db="jobbole",
charset="utf8")
cursor = conn.cursor()
def crawl_ips():
# ip
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"}
for i in range(2000):
res = requests.get(
"http://www.xicidaili.com/nn/{0}".format(i),
headers=headers)
selector = Selector(text=res.text)
all_trs = selector.css("#ip_list tr")
ip_list = []
for tr in all_trs[1:]:
speed_str = tr.css(".bar::attr(title)").extract()[0]
if speed_str:
speed = float(speed_str.split(" ")[0])
all_texts = tr.css("td::text").extract()
match_obj1 = re.match(".*'HTTPS'.*", str(all_texts))
match_obj2 = re.match(".*'HTTP'.*", str(all_texts))
proxy_type = ""
if match_obj1:
proxy_type = "HTTPS"
elif match_obj2:
proxy_type = "HTTP"
ip = all_texts[0]
port = all_texts[1]
ip_list.append((ip, port, proxy_type, speed))
for ip_info in ip_list:
cursor.execute(
"insert into xici(ip, port, speed, proxy_type) VALUES('{0}', '{1}', {2}, '{3}')".format(
ip_info[0], ip_info[1], ip_info[3], ip_info[2]))
conn.commit()
class GetIp(object):
def delete_ip(self, ip):
# ip
delete_sql = """
delete from xici where ip = '{0}'
""".format(ip)
cursor.execute(delete_sql)
conn.commit()
return True
def judge_ip(self, ip, port):
# ip
http_url = "http://www.baidu.com"
proxy_url = "http://{0}:{1}.format(ip, port)"
try:
proxy_dict = {
"http":proxy_url,
}
response = requests.get(http_url, proxies=proxy_dict)
except Exception as e:
print("invalid ip and port")
self.delete_ip(ip)
return False
else:
code = response.status_code
if code >= 200 and code < 300:
print("valid ip and port")
return True
else:
print("invalid ip and port")
self.delete_ip(ip)
return False
def get_random_ip(self):
# ip
random_sql ="""
SELECT ip, port FROM xici WHERE proxy_type = 'HTTP'
ORDER BY RAND()
LIMIT 1
"""
result = cursor.execute(random_sql)
for ip_info in cursor.fetchall():
ip = ip_info[0]
port = ip_info[1]
judge_re = self.judge_ip(ip, port)
if judge_re:
return "http://{0}:{1}".format(ip, port)
else:
return self.get_random_ip()
#print(crawl_ips())
if __name__ == "__main__":
get_ip = GetIp()
get_ip.get_random_ip()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python 파충류 자동화 b역 실시간 탄막 실례 방법최근 중국 CCTV 뉴스 기자 왕빙빙은 귀여움과 전문적인 뉴스 업무 수준을 제거하는 것으로 많은 네티즌들의 사랑을 받고 있다. b역에서도 왕빙빙에 관한 동영상을 편집한 up주들이 많다.우리는 모두 b역이 하나의 탄막...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.