返回信息流其实是个小白。。。是这样的,目标网站是http://muchong.com/bbs/,由于访问太频繁禁了ip,为了省事买了代理,但是加进去还是不行。代码是这样的:
def check_ip(proxys_dict):
try:
r=requests.get('http://www.baidu.com/',proxies=proxys_dict,timeout=3)
if r.status_code==200:
return 1
else:
return 0
except Exception as e:
return 0
#这个是检查代理是不是能用,如果检查的网站是百度,能通过,如果是http://muchong.com/bbs/就不行了。
def get_proxy():
with open(r'C:\Users\***\Desktop\pro.txt','r') as f:
pro=f.read()
pro=pro.split('\n')
#pro=pd.read_csv('my_proxies.csv')
while True:
pro_dict={'https':random.choice(pro)}
print(pro_dict)
res = check_ip(pro_dict)
if res==0:
#去掉不能使用的ip
#pro=pro.drop([num])
print("ip链接超时,重新获取中...")
else:
break
print("使用代理:", pro_dict)
return pro_dict
#这个是从本地文件取得ip,都是HTTPS的,随机取一个,判断不能用的话重新获取
#请求头也设置了的
url='http://muchong.com/bbs/journal.php?tagname=all'
headers = [
'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19',
'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
'Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0',
'Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0',
'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36',
'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19',
'Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3',
'Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A101a Safari/419.3'
]
# 伪装浏览器
def get_header():
return {'User-Agent':random.choice(headers)}
#爬虫部分是这样的,一上来就不行了
url='http://muchong.com/bbs/journal.php?tagname=all'
proxys_dict=get_proxy()
r=requests.get(url,headers=get_header(),proxies=proxys_dict)
另外是,不设置代理可以爬一点,被封后是一天,用浏览器和代码都不行,考虑到反爬的可能性,ip和浏览器都换了是能够访问的,到这一步是不是能够考虑phantomJS了?上面的方法没救了?
还是说我的代理加的有问题?第一次考虑加代理的事情,也没用过框架,以前简单爬一点都是time.sleep解决的。
所以求问大佬,我现在应该朝哪个方向考虑?
这是一条镜像帖。来源:北邮人论坛 / python / #23164同步于 2018/11/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
爬虫代理的设置
xiaoguiwk
2018/11/29镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
我以前也试过requests的代理,但是也失败了。。只不过我用的是免费代理,楼主买的话应该没问题才对。
后来我就连手机热点爬,反正换了ip就行。
这次不能用time.sleep吗?或者试试sleep一个随机数?有的网站访问间隔太规律也不行。
再就是去掉header试试?要么就把浏览器里的header全加上?
感谢,我试试看
【 在 arooba 的大作中提到: 】
: 我以前也试过requests的代理,但是也失败了。。只不过我用的是免费代理,楼主买的话应该没问题才对。
: 后来我就连手机热点爬,反正换了ip就行。
: 这次不能用time.sleep吗?或者试试sleep一个随机数?有的网站访问间隔太规律也不行。
我买的代理只提供https或者二者混合的。。。所以我就没区分,所以说https代理不能访问http的?
【 在 z573281069 的大作中提到: 】
: 。。你访问的url是http的,你加的代理是https的,就等于没加没加代理,把代理换成http的试试能行不
不是,你设置代理的时候,把一个代理设置成http和https两种的,百度下requests代理设置你就明白了
【 在 xiaoguiwk (小鬼) 的大作中提到: 】
: 我买的代理只提供https或者二者混合的。。。所以我就没区分,所以说https代理不能访问http的?