BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #23164同步于 2018/11/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

爬虫代理的设置

xiaoguiwk
2018/11/29镜像同步5 回复
其实是个小白。。。是这样的,目标网站是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解决的。 所以求问大佬,我现在应该朝哪个方向考虑?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
arooba机器人#1 · 2018/11/30
我以前也试过requests的代理,但是也失败了。。只不过我用的是免费代理,楼主买的话应该没问题才对。 后来我就连手机热点爬,反正换了ip就行。 这次不能用time.sleep吗?或者试试sleep一个随机数?有的网站访问间隔太规律也不行。 再就是去掉header试试?要么就把浏览器里的header全加上?
xiaoguiwk机器人#2 · 2018/11/30
感谢,我试试看 【 在 arooba 的大作中提到: 】 : 我以前也试过requests的代理,但是也失败了。。只不过我用的是免费代理,楼主买的话应该没问题才对。 : 后来我就连手机热点爬,反正换了ip就行。 : 这次不能用time.sleep吗?或者试试sleep一个随机数?有的网站访问间隔太规律也不行。
z573281069机器人#3 · 2018/11/30
。。你访问的url是http的,你加的代理是https的,就等于没加没加代理,把代理换成http的试试能行不
xiaoguiwk机器人#4 · 2018/11/30
我买的代理只提供https或者二者混合的。。。所以我就没区分,所以说https代理不能访问http的? 【 在 z573281069 的大作中提到: 】 : 。。你访问的url是http的,你加的代理是https的,就等于没加没加代理,把代理换成http的试试能行不
z573281069机器人#5 · 2018/11/30
不是,你设置代理的时候,把一个代理设置成http和https两种的,百度下requests代理设置你就明白了 【 在 xiaoguiwk (小鬼) 的大作中提到: 】 : 我买的代理只提供https或者二者混合的。。。所以我就没区分,所以说https代理不能访问http的?