scrapy爬虫相关 关于json数据的处理

图片说明最近在做scrapy爬虫,发现有的网页好像需要爬json。我跟踪到了这个json文件,那么请问怎么爬取我需要的数据呢?xpath我理解了,但是json的数据不是很会啊。。
PS.简单来说就是怎么样把这些json的数据转化为xpath的地址啊?

1个回答

使用 JSON 函数需要导入 json 库:import json

justinlife
justinlife 这个我了解到了 还查到了有类似xpath的jsonpath,请问我是否可以类比xpath来找出想要的元素呢
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python爬虫scrapy爬取了数据无法写入json

用scrapy成功爬取了商品数据,但是到目录下却发现数据文件没有创建,郁闷。。pipelines文件代码如下 ``` import codecs import json class AutopjtPipeline(object): def _int_(self): self.file=codecs.open("77.json","wb",encoding="utf-8") def process_item(self, item, spider): for j in range(0,len(item["name"])): name = item["name"][j] price=item["price"][j] comnum = item["comnum"][j] link = item["link"][j] # 将当前页下第j个商品的name、price、comnum、link等信息处理一下,重新组合成一个字典 goods = {"name": name, "price": price, "comnum": comnum, "link": link} # 将组合后的当前页中第j个商品的数据写入json文件 i = json.dumps(dict(goods), ensure_ascii=False) line = i + '\n' self.file.write(line) # 返回item return item def close_spider(self,spider): self.file.close() ``` 同时报错 Traceback (most recent call last): File "c:\users\93422\appdata\local\programs\python\python35\lib\site-packages\twisted\internet\defer.py", line 654, in _runCallbacks current.result = callback(current.result, *args, **kw) File "C:\Users\93422\Desktop\python\autopjt\autopjt\pipelines.py", line 28, in close_spider self.file.close() AttributeError: 'AutopjtPipeline' object has no attribute 'file' items文件代码以及爬虫代码都基本没问题,爬虫代码如下 ```import scrapy from autopjt.items import AutopjtItem from scrapy.http import Request class AutospdSpider(scrapy.Spider): name = 'autospd' allowed_domains = ['dangdang.com'] start_urls = ['http://category.dangdang.com/pg1-cid4003872-srsort_sale_amt_desc.html' ] def parse(self, response): item=AutopjtItem() item['name']=response.xpath("//p[@class='name']/@title").extract() item['price']=response.xpath('//span[@class="price_n"]/text()').extract() item['link']=response.xpath('//p[@class="name"]/@href').extract() item['comnum']=response.xpath('//a[@ddclick]/text()').extract() yield item for i in range(1,20): url="http://category.dangdang.com/pg"+str(i)+"-cid4003872-srsort_sale_amt_desc.html" yield Request(url,callback=self.parse) ```

爬虫处理json数据的问题

这个爬虫几个星期前都可以正常使用,可是最近却出问题了 import json import requests as rq import pandas as pd kw = input('Please input the position needs to fetch:') lagou_url = 'http://www.lagou.com/jobs/positionAjax.json?first=false&pn={0}&kd={1}' lagou_python_data = [] for i in range(1, 31): print('fetch {0} page'.format(i)) lagou_url_ = lagou_url.format(i, kw) f=rq.get(lagou_url_).text lagou_data = json.loads(f) lagou_python_data.extend(lagou_data['content']['positionResult']['result']) position_data = pd.DataFrame(lagou_python_data) position_data.to_csv('./About {0} position.csv'.format(kw), index=False) print('data has been saved') 会报json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)的错误,查了一些资料觉得可能是json格式之类的问题,可是之前都能正常使用呐,实在是弄不明白。

flask+scrapy的爬虫问题

刚刚开始学习爬虫,现在已经可以通过scrapy crawl myscrapy的方式启动一个爬虫, 现在我想实现这样一个功能:用flask定义一个接口,别人调用这个接口的时候传递一个 url参数,拿到这个参数之后自动启动爬虫进行爬取数据,爬取到的数据以json数组的形式 返回给调用接口的人。想问下大家有什么实现思路吗?拜托了,感谢各位。

python scrapy 爬取的数据保存不了

# python scrapy 爬取的数据保存不了 上代码 spider代码: ``` from textsc.items import TextscItem from scrapy.selector import Selector from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.contrib.linkextractors import LinkExtractor class Baispider(CrawlSpider): name = "Baidu" allowed_domains = ["baidu.com"] start_urls = [ "https://zhidao.baidu.com/list" ] rules = ( Rule(LinkExtractor(allow=('/shop', ), deny=('fr', )), callback='parse_item'), ) def parse_item(self, response): sel= Selector(response) items=[] item=TextscItem() title=sel.xpath('//div[@class="shop-menu"]/ul/li/a/text()').extract() for i in title: items.append(i) item['TitleName'] = items print (item['TitleName']) return item ``` items.py代码 ``` import scrapy import json class TextscItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() TitleName = scrapy.Field() pass ``` scrapy的版本是1.4.0 运行没有报错 但是json文件里面什么都没有 求解答 谢过!..

scrapy代码运行成功却没有保存到文件中

#**_ scrapy代码运行成功却没有保存到文件中_** **代码**: ![图片说明](https://img-ask.csdn.net/upload/201708/21/1503313313_722770.png) ``` #encoding:utf-8 #!/user/bin/python from scrapy.spider import Spider from scrapy.selector import Selector class DmozSpider(Spider): name = "dmoz" allowed_domains = ["dmoz.org"] start_urls = [ "http://tieba.baidu.com/f?kw=python3&ie=utf-8&pn=50", #"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" ] def parse(self, response): sel = Selector(response) sites = sel.xpath('.//a[@title]/text()').extract() for i in sites: print ('提示 这是title 提示 这是title 提示 这是title',i) yield items ``` 上面的代码出现了如下错误 ![图片说明](https://img-ask.csdn.net/upload/201708/21/1503313549_239409.png) 把 ``` yield items ``` 改为 yield sites 时,没有报错 但是 123.json文件是空的

用anaconda的scrapy爬取数据,按照步骤设置好了,却爬不到数据,求助大神救救菜鸟

这是运行的全部结果: (D:\Anaconda2) C:\Users\luyue>cd C:\Users\luyue\movie250 (D:\Anaconda2) C:\Users\luyue\movie250>scrapy crawl movie250 -o items.json 2017-05-12 19:24:26 [scrapy.utils.log] INFO: Scrapy 1.3.3 started (bot: movie250) 2017-05-12 19:24:26 [scrapy.utils.log] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'movie250.spiders', 'FEED_URI': 'items.json', 'SPIDER_MODULES': ['movie250.spiders'], 'BOT_NAME': 'movie250', 'ROBOTSTXT_OBEY': True, 'FEED_FORMAT': 'json'} 2017-05-12 19:24:26 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.feedexport.FeedExporter', 'scrapy.extensions.logstats.LogStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.corestats.CoreStats'] 2017-05-12 19:24:26 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2017-05-12 19:24:26 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2017-05-12 19:24:26 [scrapy.middleware] INFO: Enabled item pipelines: [] 2017-05-12 19:24:26 [scrapy.core.engine] INFO: Spider opened 2017-05-12 19:24:26 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2017-05-12 19:24:26 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023 2017-05-12 19:24:26 [scrapy.core.engine] DEBUG: Crawled (403) <GET http://movie.douban.com/robots.txt> (referer: None) 2017-05-12 19:24:26 [scrapy.core.engine] DEBUG: Crawled (403) <GET http://movie.douban.com/top250/> (referer: None) 2017-05-12 19:24:27 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <403 http://movie.douban.com/top250/>: HTTP status code is not handled or not allowed 2017-05-12 19:24:27 [scrapy.core.engine] INFO: Closing spider (finished) 2017-05-12 19:24:27 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 445, 'downloader/request_count': 2, 'downloader/request_method_count/GET': 2, 'downloader/response_bytes': 496, 'downloader/response_count': 2, 'downloader/response_status_count/403': 2, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2017, 5, 12, 11, 24, 27, 13000), 'log_count/DEBUG': 3, 'log_count/INFO': 8, 'response_received_count': 2, 'scheduler/dequeued': 1, 'scheduler/dequeued/memory': 1, 'scheduler/enqueued': 1, 'scheduler/enqueued/memory': 1, 'start_time': datetime.datetime(2017, 5, 12, 11, 24, 26, 675000)} 2017-05-12 19:24:27 [scrapy.core.engine] INFO: Spider closed (finished)

scrapy formdata提交模拟点击下一页的参数 翻页失败

大概是知道什么原因了,但是还是找不到办法,有哪位大神碰到过么。 遇到问题的这个系统的分页是用asp.net的分页控件写的,我看很多道友都遇到这个情况,但不知道是怎么解决的。 f12 看到的所有需要提交的参数,我也都带上了,但就是翻不了页。 ———————————————————————————————————————————————————— 拜托各位大神帮忙看看,实在是困扰在下许多天了。 小弟新人,用的是scrapy爬取一个系统的网页数据,在模拟点击下一页的时候卡住了。 这个系统分页跳转他用的不是url,而是提交参数的形式。 我代码里写的参数基本上和浏览器看到的一样,同样也用postman测试是完全可以跳转的。 但就是在代码里的就是怎么都跳转不了。 (简言之就是,和页面请求一样的参数,代码里不行,但是postman里面可以。) 我有猜测,会不会是response的问题,但无从去验证。 图一是我代码里写的要提交的参数。 图三,四是浏览器页面跳转下一页需要提交的参数。 图五是我用postman提交相同参数却可以模拟跳转。 ![图片说明](https://img-ask.csdn.net/upload/201706/26/1498457288_217488.png) ![图片说明](https://img-ask.csdn.net/upload/201706/26/1498457307_589502.png) ![图片说明](https://img-ask.csdn.net/upload/201706/26/1498457317_384042.png) ![图片说明](https://img-ask.csdn.net/upload/201706/26/1498457328_205682.png) ![图片说明](https://img-ask.csdn.net/upload/201706/26/1498457382_156337.png)

scrapyd 运行爬虫失败,求解!!!!

就是网上运行爬虫这一步一直有问题,求解! 命令:curl http://localhost:6800/schedule.json -d project=robot -d spider=s1 ![图片说明](https://img-ask.csdn.net/upload/201803/22/1521651754_469173.png)

scrapy框架+formdata+ajax爬取及翻页问题

## 问题描述:使用scrapy框架爬取ajax网页,以中国地震台网——历史查询为例,我想爬取某个时间段内所有的数据,但是我的代码并不能实现,找了一些相关问题参考,最终代码如下,未能实现,请问大哥大佬们能支个招吗。。。(scrapy框架,已测试过代码其他配置等没有问题) #spider文件: ``` # -*- coding: utf-8 -*- import scrapy from EarthquakeScrapy.items import EarthquakescrapyItem class TestScrapy(scrapy.Spider): name = 'test' # 爬虫的名字 allowed_domains = ['ceic.ac.cn/search'] start_urls = 'http://www.ceic.ac.cn/ajax/search?page=&&start=&&end=&&jingdu1=&&jingdu2=&&weidu1=&&weidu2=&&height1=&&height2=&&zhenji1=&&zhenji2=' # 爬取页码循环次数,一共57页 all_page = 3 def start_requests(self): # 遍历各页 for i in range(1, self.all_page + 1): # 从前端获取的页面[1,57+1),循环1到57页 yield scrapy.FormRequest(self.start_urls, formdata={'page': 'i', 'start': '2019-03-25','end': '2020-03-25', 'jingdu1': '', 'jingdu2': '','weidu1': '', 'weidu2': '', 'height1': '','height2': '', 'zhenji1': '', 'zhenji2': '','callback': ''}, callback=self.parse, dont_filter=True) # 请求对应的内容 def parse(self, response): result = eval(response.body.decode('utf-8')) records = result['shuju'] item = EarthquakescrapyItem() print("**")#测试用 for record in records: item['level'] = record['M'] item['time'] = record['O_TIME'] item['longitude'] = record['EPI_LON'] item['latitude'] = record['EPI_LAT'] item['depth'] = record['EPI_DEPTH'] item['address'] = record['LOCATION_C'] print(record['M'])#测试爬取数据情况 # yield item ```

【帮帮孩子】scrapy框架请问如何在parse函数中调用已有的参数来构造post请求获得回传的数据包呀

刚接触scrapy框架一周的菜鸟,之前都没用过框架手撸爬虫的,这次遇到了一个问题,我先请求一个网页 ``` def start_requests(self): urls=["http://www.tiku.cn/index/index/questions?cid=14&cno=1&unitid=800417&chapterid=701354&typeid=600122&thrknowid=700137"] for url in urls: yield scrapy.Request(url=url,callback=self.parse) ``` 然后传给parse方法获得了question_ID这个关键参数,然后我想在这里面直接利用这个question_id这个参数构造post请求获得它回传的json数据包并保存在 item['正确答案']之中,请问我要如何实现?,谢谢大佬百忙之中抽空回答我的疑问,谢谢! ``` def parse(self, response): item = TikuItem () for i in range(1,11): QUESTION_ID=str(response.xpath('(/html/body/div[4]/div[2]/div[2]/div['+str(i)+']/div[@class="q-analysis text-l"]/@id)').extract_first()[3:]) item['question_ID']=QUESTION_ID ``` 这是我的items.py文件 ``` class TikuItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() question_ID=scrapy.Field()#题号 correct_answer=scrapy.Field()#正确答案 ```

Python 爬虫 status 200 但得不到数据

想爬取赢商网的一些信息,response中是存在信息的。想用request.post来爬,但是得不到信息。 ``` import requests import json #%% url = 'http://yzs.winshangdata.com/wsapi/brand/getBrandTuoZhanProvinces' headers = { 'Content-Type': 'application/json;charset=UTF-8', 'Cookie': 'UM_distinctid=16f40179a3117f-08f154d235ffb8-6701b35-11442c-16f40179a322bd; Hm_lvt_f48055ef4cefec1b8213086004a7b78d=1577425731,1577425985,1577426204,1577427086; winfanguser=uid=shumiao888&nid=shumiao888_105711714&logNum=10467&err163=2dde6523ff7cdc29&pwd=06915a38d9e9e87f5ffe745c51d659&headerImg=http://user.winshangdata.com/image/default_20161129.png&sex=0&Email=&IsCompany=0; eyeuser=uid%3dshumiao888%26nid%3dshumiao888_105711714%26logNum%3d10467%26err163%3d2dde6523ff7cdc29%26pwd%3d06915a38d9e9e87f5ffe745c51d659%26headerImg%3dhttp%3a%2f%2fuser.winshangdata.com%2fimage%2fdefault_20161129.png%26sex%3d0%26Email%3d%26IsCompany%3d0; mode=mode; Hm_lpvt_f48055ef4cefec1b8213086004a7b78d=1577430750; JSESSIONID=C6734BEB6CAC2CAEB1DA02BD524B24AF; Hm_lvt_742e37d60ea288bb1d1f445eab6ce50b=1577365684,1577430757,1577430765,1577430801; Hm_lpvt_742e37d60ea288bb1d1f445eab6ce50b=1577430801', 'platform': 'yzs', 'Referer': 'http://yzs.winshangdata.com/', 'Token': 'C334D3A3244400C2E53B431BCF0A6F17.B04B0D7A106EC8A6B9F5704BCE4A9CC9.2019-12-27 15:12:37', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' } payload = { 'brandId': "4680" } #%% res = requests.post(url, headers, json=payload) #%% result = res.content.decode('utf-8') ``` 错误是这样的。 ![图片说明](https://img-ask.csdn.net/upload/201912/27/1577432213_96048.png)

爬虫,去哪儿网接口数据解析

去哪网的接口数据很奇怪貌似是带入某种特定的解析函数才能获取真正的信息,爬取的时候使用selenium又太慢,求解。 ![图片说明](https://img-ask.csdn.net/upload/201708/16/1502868266_647542.png)

爬虫爬取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模拟登录知乎,返回“登录过于频繁,请稍后重试”

之前用requests模拟登录,加载到本地一直自动刷新。用scrapy登陆后,返回200和“登录过于频繁,请稍后重试”,求助dalao,搞了好多天了。代码如下: # -*- coding: utf-8 -*- import scrapy import json import re class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhihu.com'] start_urls = ['http://www.zhihu.com/'] agent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0" header = { "HOST": "www.zhihu.com", "REFERER": "https://www.zhihu.com", "User-Agent": agent, "Connection":"Keep-Alive" } def parse(self, response): pass def start_requests(self): return [scrapy.Request("https://www.zhihu.com/signin?next=/",headers=self.header,callback=self.login)] def login(self,response): match_obj = re.match('.*name="_xsrf" value="(.*?)"', response.text, re.DOTALL) xsrf = '' if match_obj: xsrf = (match_obj.group(1)) if xsrf: post_url = "https://www.zhihu.com/login/phone_num" post_date = { "_xsrf": xsrf, "password": "13247161221", "phone_num": "yun10791023", 'captcha_type': 'cn', 'remember_me': 'true', } return [scrapy.FormRequest( url = post_url, formdata = post_date, headers = self.header, callback = self.checklogin )] def checklogin(self,response): #验证服务器的返回数据判断是否成功 text_json = json.loads(response.text) #此处打断点出现:登录过于频繁,请稍后重试 if "msg" in text_json and text_json["msg"] == "登陆成功": for url in self.start_urls: yield scrapy.Request(url,dont_filter=False,headers = self.header,)

python在post请求下爬取数据,为什么返回的只有一个空列表?

``` url='https://www.nudtdata.com.cn/getInfoByAreas2/' headers={ 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Content-Length': '192', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Cookie': 'Hm_lvt_34468f2169a583fe54b48adaf05a94c6=1588511306,1588557588,1588755767,1588780421; Hm_lpvt_34468f2169a583fe54b48adaf05a94c6=1588819034', 'Host': 'www.nudtdata.com.cn', 'Origin': 'https://www.nudtdata.com.cn', 'Referer': 'https://www.nudtdata.com.cn/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400', 'X-Requested-With': 'XMLHttpRequest'} data={ 'level': 3, 'areas[0][]': 114.32761118774398, 'areas[0][]': 114.31101050191958, 'areas[0][]': 30.52845789078041, 'areas[0][]': 30.512373872738657, 'areaslength': 1 'oldtime':2020-5-6} r=requests.post(url=url,data=json.dumps(data),headers=headers) print(r.text) ``` ![图片说明](https://img-ask.csdn.net/upload/202005/08/1588911523_570964.png) 结果什么都没抓到,请问是什么问题呢? 我想要获得图中的信息,应该怎么做? ![图片说明](https://img-ask.csdn.net/upload/202005/08/1588920657_734574.png)

求指教Python爬虫大众点评,一直无法解决,麻烦各位大神不腻赐教

![图片说明](https://img-ask.csdn.net/upload/201811/12/1542016501_269808.jpg) 就这种不知道是js加载的还是什么,通过某种技术加密的爬虫就没办法解决了,请教各位大神指教下这种怎么解决,能给个代码示例就最好了,谢谢

scarpy框架如何循环爬取列表中所有的url的信息

代码如下 import scrapy import json import re from plane.items import PlaneItem class PlanespiderSpider(scrapy.Spider): name = 'planespider' allowed_domains = ['tuniu.com'] start_urls = ['https://flight-api.tuniu.com/query/flight/v2/list?callback=jQuery17207759591352059797_1565148905476&{"withTransfer":true,"passengers":[{"count":1,"psgType":"ADT"}],"voyType":"ST","voys":[{"orgCity":"CAN","dstCity":"BJS","deptDate":"2019-08-09"}],"tokenKey":"G92ZWFuZHBlYWNlMmxpZ2h0L3YyL2xpc","useToken":true}&_=1565148905672'] cityname = ('AQG', 'AKA', 'ABC') url1 = [] for i in cityname: for j in cityname: if i != j: urls = ( 'https://flight-api.tuniu.com/query/flight/v2/list?callback=jQuery17207759591352059797_1565148905476&{"withTransfer":true,"passengers":[{"count":1,"psgType":"ADT"}],"voyType":"ST","voys":[{"orgCity":"%s","dstCity":"%s","deptDate":"2019-08-09"}],"tokenKey":"G92ZWFuZHBlYWNlMmxpZ2h0L3YyL2xpc","useToken":true}&_=1565148905672' % (i, j)) url1.append(urls) def parse(self, response): plane_json = json.loads(re.match(".*?({.*}).*", response.body.decode(), re.S).group(1)) item = PlaneItem() data = plane_json['data'] airbasic = data['airBasic'] flightmap = airbasic['flightMap'].values() for each in flightmap: item["airCom"] = each["airCom"] item['flightNo'] = each['flightNo'] item['orgCity'] = each['orgCity'] item['dstCity'] = each['dstCity'] item['orgAirport'] = each['orgAirport'] item['dstAirport'] = each['dstAirport'] item['deptTime'] = each['deptTime'] item['arrvTime'] = each['arrvTime'] item['rate'] = each['rate'] yield item

Python+XPath网页爬虫问题

我希望制作百度贴吧的一个小爬虫,爬取内容包括一个帖子中的发帖人、发帖内容,测试网页为https://tieba.baidu.com/p/3905531791,爬取1-5页的内容,代码如下: ``` # -*- coding:utf-8 -*- from lxml import etree from multiprocessing.dummy import Pool as ThreadPool import requests import re # import json import sys reload(sys) sys.setdefaultencoding('utf-8') def write(content): f.writelines(u'回帖人:'+str(content['user_name'])+'\n') f.writelines(u'回帖内容:'+unicode(content['content'])+'\n') def spider(url): html = requests.get(url) # print html.text selector = etree.HTML(html.text) content_field = selector.xpath('//div[@class="l_post l_post_bright j_l_post clearfix "]') item = {} for each in content_field: print content_field[0] print each author = each.xpath('//*/li[@class="d_name"]/a/text()')[0] content = each.xpath('//*/div[@class="p_content "]/cc/div/text()')[0] num = each.xpath('//*/div[@class="post-tail-wrap"]/span[@class="tail-info"]/text()') print content print author item['user_name'] = author item['content'] = content write(item)** if __name__ == '__main__': pool = ThreadPool(4) f = open('content.txt','w') page=[] for i in range(1,6): newpage = 'https://tieba.baidu.com/p/3905531791?pn=' + str(i) page.append(newpage) results = pool.map(spider,page) pool.close() pool.join() f.close() ``` 但问题出现在,每次for循环中提取的信息都一样,每一页的发帖人和发帖内容都一样 如下: 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:末日灬圣帝君王 回帖内容: 这个支持一下 回帖人:lis945945 回帖内容: 马克一下。 回帖人:lis945945 回帖内容: 马克一下。 回帖人:lis945945 回帖内容: 马克一下。 回帖人:lis945945 回帖内容: 马克一下。 回帖人:lis945945 回帖内容: 马克一下。 回帖人:lis945945 回帖内容: 马克一下。 回帖人:lis945945 回帖内容: 马克一下。 回帖人:lis945945 回帖内容: 马克一下。 不知道哪里出了问题。。。

请问这个python里selenium获取异步加载的问题

我是新手,请问个小白的问题: 用selenium提取异步加载页面,结果也找不到浏览器里的显示内容是怎么回事? 比如下面这个页面,要获取页面里的关注数量,粉丝数量等资料 ``` from selenium import webdriver driver = webdriver.Chrome() driver.get('https://h5.weishi.qq.com/weishi/personal/1546312839098426/wspersonal?_proxy=1&_wv=1&id=1546312839098426') driver.implicitly_wait(8) # ttt = driver.find_element_by_css_selector('//div').text # text = driver.find_element_by_id('app').text # driver.implicitly_wait(3) print('结果::::::::::::' + driver.page_source) ```

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

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

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

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

美团面试,问了ThreadLocal原理,这个回答让我通过了

他想都想不到,ThreadLocal我烂熟于心

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

立即提问
相关内容推荐