import urllib.request
import urllib.parse
import urllib.error
import re
import random
def open_url(url):
req_header = {'Connection': 'Keep-Alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0',
'Accept':'*/*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'}
req = urllib.request.Request(url, None, req_header)
with urllib.request.urlopen(req, None, timeout=5) as respond:
html = respond.read()
return html
def get_proxy_urls():
proxy_list = []
for i in range(1,11):
str1 = r'http://www.kuaidaili.com/proxylist/%d/' % i
proxy_list.append(str1)
return proxy_list
def get_ip(url):
comp = '''<td data-title="IP">(.+?)</td>
<td data-title="PORT">(.+?)</td>
<td data-title="匿名度">(.+?)</td>
<td data-title="类型">(.+?)</td>
<td data-title="get/post支持">(.+?)</td>
<td data-title="位置">(.+?)</td>
<td data-title="响应速度">(.+?)</td>
<td data-title="最后验证时间">(.+?)</td>'''
text_html = open_url(url).decond('utf_8')
ip_list = re.findall(comp, text_html)
return ip_list
def test():
url = random.choice(get_proxy_urls())
print(url)
print(open_url(url))
print(get_ip(url))
if __name__ == '__main__':
test()
在urllib.request.urlopen()处出现异常
urllib.error.HTTPError: HTTP Error 521:
PHP中文网2017-04-18 10:32:16
블로그 글 참고 https://my.oschina.net/jhao10...
원래 블로거는 JS 코드 실행을 위해 PyV8을 사용했는데, 저는 PyExecJS로 변경했습니다
PHP中文网2017-04-18 10:32:16
웹사이트의 크롤링 방지 메커니즘이어야 합니다. scrapy 발생 521에 대한 이 기사를 확인하세요
특정 상황은 여전히 특정 대상의 크롤링 방지 전략에 따라 다릅니다. 작동하지 않으면 해당 프록시를 사용하여 프록시 2333333333을 크롤링하세요.