关于python爬虫代理ip的问题

在网站上找一个免费的ip代理,在窗口上打印出来自己的代理ip,但是显示结果并没有看到IP的有关记录,全是网易上的网页内容好像,哪位大神可以帮我解惑!!!图片说明图片说明

2个回答

你输出的就是html内容,我觉得应该读取响应头获取ip

Lin_qx
Lin_qx 就是html内容不对呀,感觉没有访问到那里
接近 3 年之前 回复

爬虫IP就像挑选手机一样,要注意CPU参数,摄像头参数、显示屏参数等等,爬虫也是有一套准则,全球(ipidea)结合爬虫用户的需求特征,总结了以下几点经验:
一要IP池大,都知道爬虫用户和补量业务用户,都对IP数量有巨大要求。假设IP池不够大的话,就无法满足业务或者因为重复提取,导致IP封禁。
二要高匿性强,稳定性好。连接不稳定,频繁掉线将会影响效率。
三应寻找覆盖地区全,爬虫过程中很多业务对地区都是有要求,所以需要IP必须覆盖大部分地区,且每个地区都是有一定的量。
四真实IP,这点对于爬虫用户真实IP的有效率,业务成功率都是相当高的。
结合以上几点经验爬虫效率,成功率将大大提升。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请教python 爬虫 ip代理 的问题

我在做一个从淘宝上抓照片的爬虫,然后在应对重定向问题的时候用ip代理,使用代理部分的代码如下,ip代理是从[西刺代理](http://www.xicidaili.com/nn "")上抓下来并检验的,高匿的,但还是没能解决这个问题。请问下这是怎么个情况,该如何解决。如果说这样用代理是没有错的话,那是怎么被反爬虫了? ```proxies = [ {'http':'222.83.14.145:3128'}, {'http':'211.144.76.58:9000'}, {'http':'101.200.138.85:3128'}, {'http':'114.40.79.27:8080'}, {'http':'119.29.53.211:80'}, {'http':'58.49.144.208:8090'}, {'http':'42.96.197.187:80'}, {'http':'119.29.171.208:80'}, {'http':'124.160.194.71:80'}, {'http':'27.10.109.113:8118'}, {'http':'58.23.182.211:8118'}, {'http':'119.188.94.145:80'}, {'http':'113.243.132.120:8080'}, {'http':'122.96.59.107:843'}, {'http':'42.233.18.143:8118'}, {'http':'122.237.107.30:80'}, {'http':'117.69.6.181:8118'}, {'http':'118.113.7.48:8118'}, {'http':"222.83.14.145:3128"}, {'http':"115.160.137.178:8088"} ] IPNum = ipcount%len(proxies) print IPNum print proxies[IPNum] html = requests.get(each,headers = header,proxies = proxies[IPNum]) ```

有关python爬虫代理的问题

请教各位高手,我本地打开迈普VPN后不用再IE选项中设置代理就可以连接某个网址, 但是用python怎么爬呢?![图片说明](https://img-ask.csdn.net/upload/201611/22/1479789084_178607.png) 我用requests设置的这个安全连接地址为代理IP。。。一直都在报连接超时

Python requests模块爬取https网站使用代理的问题

请问在Python使用requests库做爬虫爬取https协议的网站的时候,代理要怎么设置呢? 官方文档的说明如下 import requests proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080",} requests.get("http://example.org", proxies=proxies) 我的第一个问题是,为什么 "https": "http://10.10.1.10:1080" 这里对应的ip前面不是https而也是用http呢? 另外,我爬取了http://www.xsdaili.com 上的代理,按照上面的方式通过访问https://httpbin.org/get 验证,但是结果都是代理无法访问(代码如下,d\_ip是示例,实际抓取的ip请见附件)不知道是不是代理的用法有问题。还是所有的代理都无效... 编程新手,对于web相关知识也很有限。希望各位能帮忙解答。 谢谢! import random import requests d_ip = {"https": [ "47.112.200.175:8000", "121.237.149.33:3000", "123.149.136.43:9999"]} headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'} proxies = {"https" : "http://" + random.choice(d_ip["https"])} r = requests.get("https://httpbin.org/get", headers=headers, proxies=proxies) # 错误如下 ProxyError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /get (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x000001E87F7E7F28>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。')))

python爬虫时出现internal server error

我使用python爬取一个网站的大量帖子,大概有几百万吧 但是很奇怪,每隔不定的数量就会中止 并且挺频繁,中止原因是,Internal Server Error 严重影响了我的进度。。。 求教各位大神! PS:我是用腾讯云服务器主机和PC一起跑的,PC也遇到过很多次这样的问题,感觉可能和使用服务器电脑没关系。。。 ![图片说明](https://img-ask.csdn.net/upload/201608/30/1472517951_899147.png)

有没有懂python scrapy代理ip的老哥?

一个困扰我好几天的问题:用scrapy写的一个访问58同城的简易爬虫,在中间件里爬了很多有效的代理IP,但是在process____request方法里,代理IP不知道为什么就是不切换,一直使用的是最初成功的那个IP,明明打印的信息是已经更换了新的IP,实际访问的结果来看却还是没有更换。。。 -----这是控制台的打印: ![图片说明](https://img-ask.csdn.net/upload/201909/27/1569590380_292339.png) 这是爬虫文件:xicispider.py name = 'xicispider' allowed_domains = ['58.com'] start_urls = ['https://www.58.com/'] def parse(self, response): reg = r'<title>(.*?)</title>' print(re.search(reg,response.text).group()) yield scrapy.Request(url='https://www.58.com',callback=self.parsep, dont_filter=True) def parsep(self, response): reg = r'<title>(.*?)</title>' print(re.search(reg,response.text).group()) 这是中间件:middleware.py def process_request(self,spider,request): ip = random.choice(self.proxies) print("process_request方法运行了,重新获取的ip是:--------->",ip) request.meta['proxy'] = ip 这是settings.py里的有关配置: DOWNLOADER_MIDDLEWARES = { 'xici.middlewares.XiciDM': 543, }

python scrapy ip代理访问http网址出错但是https的就可以

![图片说明](https://img-ask.csdn.net/upload/201904/29/1556508652_290600.png) 不用代理都可以,ip代理测试是没问题的

请问scrapy爬虫使用代理的问题

我用scrapy爬虫来抓取数据,购买了一些代理,看scrapy文档上面介绍使用代理的话要编写Middleware,但是我不打算使用Middleware,我尝试了这样 ``` def start_requests(self): name = my_name password = password proxy = my proxy return[ FormRequest(url,formate={'account':my_name,'password':password}, meta={'proxy':proxy}, callback=self.after_login) ] def after_login(self, response): response.xpath ``` 但是返回了错误,请问各位老师如何不使用middleware然后可以使用代理?谢谢

python爬虫抓取亚马逊商品名,一段时间后大量返回503错误?

写了个简单的爬虫,抓取亚马逊商品的名字,一开始抓取的都还能正确返回,到几百条以后就大量返回503,偶尔成功一两条。网上说的headers和代理IP讲得比较乱,试过用headers,但是只要我一加上headers,虽然返回了200,但是bsObj.find(html)的返回还是NONE,纠结了很久不知道什么问题,有大佬解决一下吗?

python爬虫如何抓取包含JavaScript的网页中的信息

这里本科生一枚。。做本研要求抓取一些数据碰到了一些问题求指教> < 我想要抓取汽车之家上关于供应商的一些数据,然后在车型详情页里找到了关于供应商的框架源代码如下(只截取有用部分): <script type="text/javascript"> //属性 document.domain = "autohome.com.cn"; var page=1; var parameters = { isPage:0, pageCount:0, kindId:-1, vId:23867, pId: 110000, cId: 110100, sId: 0, cityUrl: '/frame/cms/GetProvinceCityList?SpecId=23867&SeriesId=0&roid1=2', url: "/frame/spec/{vId}/{pId}/{cId}/{sId}/{orderType}/{pageIndex}/{pageSize}?isPage={isPage}&seriesId={seriesId}&source={source}&kindId={kindId}" , kindUrl:"/frame/cms/GetKindBySpec?specId={vId}&provinceId={pId}&cityId={cId}&countyId={sId}", panel:"#dealer-box", pageSize:5, pageIndex: 1, orderType :0, seriesId:66, source:"defalut" }; $("[name='orderBy']").click(function() { parameters.orderType = $(this).attr('data-order'); $("#orderCan .current").attr("class", "linkname"); $(this).attr("class", "linkname current"); //parameters.pageIndex = 1; var firstPage = $("#dealerListPager a[data=1]").eq(0); if (firstPage.length == 1) { firstPage.click(); } else { load(); } return false; }); seajs.config({version:"1460100712877"}); var $$; seajs.use(['jquery','pop'], function ($) { $$=$; }); $(function(){ jQuery("#orderCan a").each(function(){ if($(this).attr("data-order")==parameters.orderType) { $("#orderCan .current").attr("class","linkname"); $(this).attr("class","linkname current"); } }) }) </script> <script type="text/javascript" src="http://x.autoimg.cn/dealer/bbs/js/DealerArea20160413.js?t=2016041421"></script> 里面包含的信息应该怎么抓取呢?我是通过selenium来进入网页的框架,这些js应该怎么解析?我尝试着用前面的那些parameter凑出来URL,但是输入到浏览器中就会跳转到汽这个网站的首页,用urllib2打开的话会报错Error 10060,但是网什么的也都没有问题,是我的IP被封了还是需要一个什么特殊的代理?? 本科期间只学过python的两门课,对java没什么了解,求帮助呀QAQ谢谢大家啦

scrapy怎么让队列中多个请求共用一个代理ip?

环境背景: 2个服务器, celery+rabbitmq + python+ scrapy爬虫框架 共有6000个url, 12点的时候启动celery产生任务和队列派给两个服务器去爬, 每次处理100个url, 我用中间件拿到10个代理ip携带上去请求, 100个处理完后, 继续处理队列中的下一组100个url, 但是为什么不读取新的ip呢? 这样6000个url跑完, 永远用的还是第一次那10个ip, 目前我是在process_request函数中每个请求都去读取一个有ip的文本, 而文本定时更换保证只有10个ip, 所以100个请求也只会随机从10个里拿, 但是后边处理队列中其他一堆请求就再也不读取新ip了, 怎么解决呢? 读取文本是为了节省ip, 如果在不读取文本,而是直接调取ip接口, 那就需要特别多的ip, 一轮6000个url就需要最少6000个ip, 现在一轮只想用300个ip, 每进行下一组100个url的时候就让它拿新的10个ip , 但貌似现在就不拿...文本里的ip还在定时更换, 结果scrapy就拿一次, 再也不拿了..

python 代理问题 代理验证那里一直通过不了

HTTPConnectionPool(host='http', port=80): Max retries exceeded with url: http://ip.chinaz.com/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x03A79E30>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',))) 代理一直不成功,不知道代码哪里错了、 #!python3 #get Proxy import requests from bs4 import BeautifulSoup from collections import deque #获取ip def getProxy(number): url='http://www.xicidaili.com/nn/' headers={ 'Host':'www.xicidaili.com', 'Referer':'http://www.so.com/link?m=aPh8cfhKQ2NFc1RnOMWh5a7QC3YM7q5XuBGmyxUXTySoLTq0kmNWg8UN8kM5wC0%2Bu695HB4%2FdearMLWKRvF7xUQKAWXc5tZBALokisY82c%2FhO%2BvCXgOHaTetN06GBGCHnwXJcgQUJQk0%3D', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36' } Deque=deque() res=requests.get(url,headers=headers) soup=BeautifulSoup(res.text,'lxml') content1=soup.find_all('td',limit=number*10)[1::10] content2=soup.find_all('td',limit=number*10)[2::10] content3=soup.find_all('td',limit=number*10)[8::10] content4=soup.find_all('div',class_='bar',limit=number*10)[0::2] for i in range(number): if judge(content4[i].get('title'),content3[i].string): one=[content1[i].string,content2[i].string,content4[i].get('title'),content3[i].string] Deque.append(one) print('Get one.........') else: print('Delete one......') return(Deque) #判断是否满足使用要求 def judge(speed,tim): if float(speed[0:-1])>1.3: # 调时间,单位是秒 return(False) else: pass if tim[-1]=='天': t=int(tim[0:-1])*24*60 elif tim[-1]=='时': t=int(tim[0:-2])*60 elif tim[-1]=='钟': t=int(tim[0:-2]) else: t=0 if t<10: #调iP可以使用时限,单位是分钟 return(False) else: pass return(True) #连接网络检验 def test(ip,port): url='http://ip.chinaz.com/' headers={ 'Host':'ip.chinaz.com', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36' } proxies={'http':'http//'+ip+':'+port,'https':'https//'+ip+':'+port} try: res=requests.get(url,headers=headers,proxies=proxies) ree=re.compile(r'</span>(.*?)<span class') ipp=ree.findall(res.text) ipre=ipp[0].strip() if ipre=='':#个人ip地址 print('本机ip') else: print(ipre) except Exception as e: print('Not working......') print(e) def start(numm): got=getProxy(numm) print('-----------------------') print('Testing ip now...') for e in got: test(e[0],e[1]) #d.popleft() start(5)

关于scrapy_splash设置代理的问题

搜了很多资源都没有用 比如用request.meta["args"]["proxy"] 或者在splashrequest 中加args:{"proxy":ip} 求指点正确的方式是怎样呢?

Python爬虫,用scrapy框架和scrapy-splash爬豆瓣读书设置代理不起作用,有没有大神帮忙看一下,谢谢

用scrapy框架和scrapy-splash爬豆瓣读书设置代理不起作用,代理设置后还是提示需要登录。 settings内的FirstSplash.middlewares.FirstsplashSpiderMiddleware':823和FirstsplashSpiderMiddleware里面的 request.meta['splash']['args']['proxy'] = "'http://112.87.69.226:9999"是从网上搜的,代理ip是从【西刺免费代理IP】这个网站随便找的一个,scrapy crawl Doubanbook打印出来的text 内容是需要登录。有没有大神帮忙看看,感谢!运行结果: ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556181491_319319.jpg) <br>spider代码: ``` name = 'doubanBook' category = '' def start_requests(self): serachBook = ['python','scala','spark'] for x in serachBook: self.category = x start_urls = ['https://book.douban.com/subject_search', ] url=start_urls[0]+"?search_text="+x self.log("开始爬取:"+url) yield SplashRequest(url,self.parse_pre) def parse_pre(self, response): print(response.text) ``` 中间件代理配置: ``` class FirstsplashSpiderMiddleware(object): def process_request(self, request, spider): print("进入代理") print(request.meta['splash']['args']['proxy']) request.meta['splash']['args']['proxy'] = "'http://112.87.69.226:9999" print(request.meta['splash']['args']['proxy']) ``` settings配置: ``` BOT_NAME = 'FirstSplash' SPIDER_MODULES = ['FirstSplash.spiders'] NEWSPIDER_MODULE = 'FirstSplash.spiders' ROBOTSTXT_OBEY = False #docker+scrapy-splash配置 FEED_EXPORT_ENCODING='utf-8' #doucer服务地址 SPLASH_URL = 'http://127.0.0.1:8050' # 去重过滤器 DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter' # 使用Splash的Http缓存 HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage' #此处配置改为splash自带配置 SPIDER_MIDDLEWARES = { 'scrapy_splash.SplashDeduplicateArgsMiddleware': 100, } #下载器中间件改为splash自带配置 DOWNLOADER_MIDDLEWARES = { 'scrapy_splash.SplashCookiesMiddleware': 723, 'scrapy_splash.SplashMiddleware': 725, 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810, 'FirstSplash.middlewares.FirstsplashSpiderMiddleware':823, } # 模拟浏览器请求头 DEFAULT_REQUEST_HEADERS = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', } ```

爬虫爬取1688返回response成功但是内容为空?

今天尝试写了一个爬取1688商品页的爬虫,发现1688的代码已经不同于几年前了,前台的页面html代码居然是通过js请求返回json数据中的值解析而来,整个动态加载的html被全部封装。在网页前台浏览的时候也能明显感觉到,整个商品页不是全部一次加载完成,随着鼠标的下滑进行动态加载,直至翻页出现。找了一下网上的爬取代码,不是代码太旧就是使用selenium,因此我尝试从解析js角度来看看能否爬到数据。 我搜索的关键词为:大理石餐盘,访问的url为:https://s.1688.com/selloffer/offer_search.htm?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&n=y&netType=1%2C11&spm=a260k.635.3262836.d102 通过抓包可以发现实际上每个页面的动态加载通过如下的js文件加载: ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552530583_824631.png) 同时可以看到头部信息为: ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552530839_105546.jpg) 因此我编写了代码来请求此url,想要获取其中的数据 通过分析url,我发现其实只有几个关键的参数在发生作用,我修改了url如下: https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true 将比较关键的参数罗列:keywords,beginpage ,startindex(本页中以0.20.40循环),templateconfigname,async,enableasync 从页面请求的结果如下 https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552531339_315690.jpg) 依据上面的分析我编写了代码: ``` ''' 得到单页商品信息 ''' try: print('正在爬取第%d页' % page) for startindex in range(0, 2): proxy = get_proxy() url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp' data = { 'keywords': KEYWORD, # 搜索关键词, 'beginpage': str(page), # 页数 'templateConfigName': TemplateConfigName, 'startIndex': str(startindex*20), 'async': 'true', 'enableAsync': 'true' } headers = { 'User_Agent': random.choice(USER_AGENT), 'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote( KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985', 'Cookie': COOKIE, } proxies = {"http": "http://{}".format(proxy)} response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5) time.sleep(1) if response.status_code == 200: print(response.text) data = response.json() get_info(data=data) except Exception as e: print(e.args) print('出现异常,重新爬取第%d页' % page) return get_one_page(page) ``` ``` 其中请求头是参照抓包的请求头进行了伪装,user_agent使用了随机代理池中的代理。 ip应用了代理池中的代理进行切换, 测试代码发现虽然返回成功,但是内容为空: 测试代码的结果如下: ``` ``` 正在爬取第1页_ ({ "hasError":false, "message":"success", "content":{ "offerResult":{ "html":"" }, "beaconP4Pid":"1552531611011186199615", "tracerId":"1191031861991552531610953000954", "end":0 } }) ``` 很明显服务器判断出来我是机器人,我检查了一下cookies还有ip以及header都没有问题 使用同样的参数在浏览器页面请求也能访问正常的结果,因此我决定增加更多的参数,也许是因为服务器 端验证会检测某个参数是否存在来判断请求来自机器人还是真正的用户,我将代码修改如下: ``` def get_one_page(page): ''' 得到单页商品信息 ''' try: print('正在爬取第%d页' % page) for startindex in range(0, 2): proxy = get_proxy() url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp' data = { 'keywords': KEYWORD, # 搜索关键词, 'beginpage': str(page), # 页数 'templateConfigName': TemplateConfigName, 'startIndex': str(startindex*20), 'async': 'true', 'enableAsync': 'true', 'rpcflag': 'new', '_pageName_': 'market', 'offset': str(9), 'pageSize': str(60), 'asyncCount': str(20), 'n': 'y', 'netType': '1%2C11', 'uniqfield': 'pic_tag_id', 'qrwRedirectEnabled': 'false', 'filterP4pIds': '550656542618%2C554434844511%2C574540124248%2C568185683625%2C567623615791%2C536778930216%2C577066747130%2C555894336804', 'leftP4PIds': '', 'pageOffset': str(3) } headers = { 'User_Agent': random.choice(USER_AGENT), 'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote( KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985', 'Cookie': COOKIE, } proxies = {"http": "http://{}".format(proxy)} response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5) time.sleep(1) if response.status_code == 200: print(response.text) data = response.json() get_info(data=data) except Exception as e: print(e.args) print('出现异常,重新爬取第%d页' % page) return get_one_page(page) ``` 测试的结果如下: ``` 正在爬取第1页 ({ "hasError":false, "message":"success", "content":{ "offerResult":{ "html":" \n \n <!-- 为打点计算 offerindex 值-->\n \n \n <!-- 用于异步请求 -->\n \n\n <div id=\"sm-maindata-script\">\n <script type=\"text\/javascript\">\n var coaseParam = {\n \'isCoaseOut\':true\n };\n <\/script>\n <script type=\"text\/javascript\">\n var rightP4P = {\n industryTagPath:\'\',\n leftP4PId:\'\',\n leftP4PLoginId:\'\',\n biaowangId:\'\'\n };\n var rightP4Poffer =[\n ];\n<\/script>\n <\/div>\n \n\n" }, "beaconP4Pid":"1552532048109186199394", "tracerId":"1191031861991552532048084000548", "end":0 } }) ``` 很遗憾结果并不理想,仍旧没有办法获得真正的数据。 我分析了还没有被我列进去的参数,因为无法寻找到其规律所以就没有加上去。 难道1688现在已经做到了,机器人无法爬的地步了吗,到底应该如何解决呢。有没有大神能够指点一下: 另外我同样的测试了一下1688的热销市场,同样的方式,没有问题可以爬取到js的内容,只不过数据是直接封装在json返回值中的,不是通过html代码二次封装。

求助!用scrapy爬虫,未全部爬完就停止

用scrapy框架爬取58.com获取一些地产数据,前期不用代理ip,本机ip爬取,页面返回滑块+点击验证码,手动解决验证码后再次爬取成功,且速度快,但很low.于是购买快代理私密IP,伪装user agent后进行爬取(没有禁cookies,因为禁了返回的页面就没有信息,页面重定向404,应该是58的一种反爬手段吧,相当于说即便我用了代理,但是从cookie 也可以判断非人为请求,所以返回验证码的概率很高)由于爬取过程中仍会返回验证码,返回验证码的这条url的数据就获取不完整,导最后爬取的总数据量不全。 解决这个问题的思路就是,返回验证码的这条url重新换个ip请求,外加请求时,随机生成一个cookie这样不容易被反爬,这样做后解决了验证码的问题,但是一旦翻页就会出现404,接下来就解决404问题,测试了实际网页,带上原来的cookie再次请求可以解决404问题,外加如果请求返回验证码的这个代理ip就从代理池里移除,于是这两个问题就解决了,只是对于总的请求次数几乎是翻倍了。 原以为这样解决了问题只是请求翻倍,使用代理数增加,但是实际过程试验多次都一样,发现最后没有全部请求完程序就停止了,这个问题暂时没有思路。 寻求帮助,这是什么原因造成的,求大神帮忙解决这个问题.

Java反反爬虫问题,已经拿到__jsl_clearance的值了但还是没法抓到数据,求大神解答

代码如下: @org.junit.Test public void test8() throws ClientProtocolException, IOException{ CloseableHttpClient client = HttpClients.createDefault(); //设置代理 HttpHost proxy = new HttpHost("118.114.77.47", 8080, "http"); RequestConfig config = RequestConfig.custom().setProxy(proxy).build(); HttpGet get=new HttpGet("http://www.cnvd.org.cn/manufacturer/manufacturerListByStartWord?startWord=A"); System.out.println(config); //模拟浏览器 get.setConfig(config); get.setHeader("Accept", "Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); get.setHeader("Accept-Encoding", "gzip, deflate"); get.setHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"); get.setHeader("Connection", "keep-alive"); get.setHeader("Host", "www.cnvd.org.cn"); get.setHeader("referer", "http://www.cnvd.org.cn/"); get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2"); get.setHeader("Upgrade-Insecure-Requests", "1"); CloseableHttpResponse response = client.execute(get); //拿到第一次请求返回的JS if(response.getStatusLine().getStatusCode()==521){ HttpEntity entity = response.getEntity(); String html=EntityUtils.toString(entity,"utf-8"); System.out.println(html); //处理从服务器返回的JS,并执行 String js=html.trim().replace("<script>", "").replace("</script>", "").replace("eval(y.replace(/\\b\\w+\\b/g, function(y){return x[f(y,z)-1]}))","y.replace(/\\b\\w+\\b/g, function(y){return x[f(y,z)-1]})"); V8 runtime = V8.createV8Runtime(); String result=runtime.executeStringScript(js); System.out.println(result); //第二次处理JS并执行 var cd,dc var l=function(){ result=result.substring(result.indexOf("var cd"),result.indexOf("dc+=cd;")+7); //result="var l=function(){ "+result+"return dc;}"; System.out.println(result); result = result.replaceAll("document*.*toLowerCase\\(\\)", "'x'"); String __jsl_clearance=runtime.executeStringScript(result); System.out.println(__jsl_clearance); runtime.release(); org.apache.http.Header[] Cookies=response.getHeaders("Set-Cookie"); System.out.println(Cookies[0].getValue().split(";")[0]); get.setHeader("Cookie",Cookies[0].getValue().split(";")[0]+";"+__jsl_clearance); //get.setHeader("Cookie",__jsl_clearance); } response=client.execute(get); //拿到最终想要的页面 HttpEntity entity = response.getEntity(); String res=EntityUtils.toString(entity,"utf-8"); System.err.println(res); //return res; } 输出的还是一个js

Python爬取电影磁力下载链接,被识别为机器人+验证登录 如何破?

1、RT:向BT搜索网站发送Request请求,已Random Requests Header处理,发送超过120次查询,即sleep2700s,仍被识别为机器人。 2、求教:这种情况下,被识别出来的原理是因为同一IP在单位时间内发送请求数过多吗?怎么破解? ip代理?验证码识别? 谢谢~

用Python的requests.get获取网页源代码出现ProxyError

具体报错如下:求大神们解答 ProxyError: HTTPConnectionPool(host='138.128.220.192', port=80): Max retries exceeded with url: http://fujianzhuneng.gotoip11.com/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000000070DDFD0>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。',)))

urllib2.URLError: <urlopen error [Errno 104] Connection reset by peer>

python爬虫使用mechanize模拟登陆出现,求解决方法,没有在代码中添加代理ip,不知到如何解决,已经困扰我一上午了,不知道哪位大侠可以帮忙啊!

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

sql语句 异常 Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your

在我们开发的工程中,有时候会报 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ------ 这种异常 不用多想,肯定是我们的sql语句出现问题,下面...

浪潮集团 往年的软件类 笔试题 比较详细的哦

浪潮集团 往年的软件类 笔试题 比较详细的哦

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

I2c串口通信实现加速度传感器和FPGA的交流

此代码能实现加速度传感器与FPGA之间的交流,从而测出运动物体的加速度。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

eclipseme 1.7.9

eclipse 出了新的eclipseme插件,官方有下载,但特慢,我都下了大半天(可能自己网速差)。有急需要的朋友可以下哦。。。

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

最简单的倍频verilog程序(Quartus II)

一个工程文件 几段简单的代码 一个输入一个输出(50Mhz倍频到100Mhz)

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

基于RSA通信密钥分发的加密通信

基于RSA通信密钥分发的加密通信,采用pycrypto中的RSA、AES模块实现

不同变质程度煤尘爆炸残留气体特征研究

为分析不同变质程度煤尘爆炸残留气体成分的特征规律,利用水平管道煤尘爆炸实验装置进行了贫瘦煤、肥煤、气煤、长焰煤4种不同变质程度的煤尘爆炸实验,研究了不同变质程度煤尘爆炸后气体残留物含量的差异,并对气体

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

jsp+servlet入门项目实例

jsp+servlet实现班级信息管理项目

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

python实现数字水印添加与提取及鲁棒性测试(GUI,基于DCT,含测试图片)

由python写的GUI,可以实现数字水印的添加与提取,提取是根据添加系数的相关性,实现了盲提取。含有两种攻击测试方法(高斯低通滤波、高斯白噪声)。基于python2.7,watermark.py为主

Xshell6完美破解版,亲测可用

Xshell6破解版,亲测可用,分享给大家。直接解压即可使用

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问