关于Python 网络数据爬虫爬取不到数据

起初是用xpath进行数据爬虫

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"}
    response = requests.get('https://www.gia.edu/CN/report-check?_=2&reportno=7348210118',headers=headers)

    contents = etree.HTML(response.text)

图片说明

发现数据不对,页面上的数据是通过JS加载出来的。

图片说明

后来通过分析数据来源,找到了数据加载是在这个JS文件中完成,并且数据是在页面中ID为xmlcontent的标签内容中,但是xmlcontent标签是设置的隐藏。
网上查阅资料说是用selenium可以获取隐藏标签

driver = webdriver.PhantomJS(executable_path=r'D:\python_tools\phantomjs-2.1.1-windows\bin\phantomjs.exe')
driver.get('https://www.gia.edu/CN/report-check?reportno=6335838911')

xmlcontent = driver.find_element_by_id('xmlcontent')

print(xmlcontent.get_attribute('innerHTML'))

但是貌似效果不理想,初学者往各位大佬指点~~~

1个回答

抓包看看,尤其注意url上的参数、cookie、postdata、method(get/post)、referer、useragent和content-type

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

Python新手,最近学习Python做了一个爬取豆瓣电影的小项目,在爬取导演、主演的时候结果不是理想,请问分别爬取导演、主演的程序怎么写? 下面是网页的程序: <div class="bd"> <p class=""> 导演: 弗兰克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗宾斯 Tim Robbins /...<br> 1994&nbsp;/&nbsp;美国&nbsp;/&nbsp;犯罪 剧情 </p>

Python爬虫爬取的数据不全

![图片说明](https://img-ask.csdn.net/upload/201707/28/1501209027_991059.png) ``` url='https://www.zhihu.com/people/yang-ze-yong-3/following' page=urllib.request.urlopen(url).read() soup=BeautifulSoup(page) items=soup.find_all('div',{'class':'List-item'}) ``` 结果只返回前3条List-item...新手求助

python爬虫爬取数据出新问题

![图片说明](https://img-ask.csdn.net/upload/201608/09/1470713681_256386.png) ![图片说明](https://img-ask.csdn.net/upload/201608/09/1470713707_413568.png) ![图片说明](https://img-ask.csdn.net/upload/201608/09/1470713717_307371.png) ![图片说明](https://img-ask.csdn.net/upload/201608/09/1470713727_916526.png) ![图片说明](https://img-ask.csdn.net/upload/201608/09/1470713738_642500.png) ![图片说明](https://img-ask.csdn.net/upload/201608/09/1470713748_330448.png) 所有的主演导演评分信息都无法爬取,这是为什么?

关于python爬虫利用正则表达式爬取不到内容的问题

我在用正则表达式爬取豆瓣电影里面的电影演员信息。 网页演员信息的位置如下: ![图片说明](https://img-ask.csdn.net/upload/201910/18/1571357394_33738.png) 那么要爬取其中的这些演员名不就是下面的代码吗? ```python actors = re.findall(r'<div class="meta abstract_2">(.*?)</div>', resp, re.DOTALL) ``` 其中resp是前面获取到的网页代码 可是print(actors)输出结果为空,请问是哪里不对呀? 有没有大佬就用正则表达式帮忙解答一下?因为我用爬虫只会用正则表达式匹配。

python爬虫爬取网页信息问题

![](https://img-ask.csdn.net/upload/201905/14/1557793745_824662.png)![图片说明](https://img-ask.csdn.net/upload/201905/14/1557793876_298823.png)如图,我要爬取的是两个日期,然后存入csv文件中。如何把这两个日期转成一行输出。

python爬虫爬取数据存储进数据库的问题

一直说我主键已存在,无法进行存储 我做的爬虫是csdn爬虫,针对于论坛一个版块,爬取某几页的所有帖子 我用的是flask-sqlalchemy来进行操作数据库,下面是三个需要用到的模型: ``` class Topic(db.Model): answer = relationship('Answer', backref='topic', lazy='dynamic') author_id = Column(String(30), ForeignKey('user.id')) id=Column(String(30),primary_key=True) title = Column(String(30)) author_name=Column(String(30)) create_time = Column('create_time', Integer) answer_nums=Column(Integer,default=0) content=Column(Text) click_nums=Column(String(30),default='0') parised_nums=Column(Integer,default=0) score=Column(Integer,default=0) status=Column(String(30)) jtl=Column(String(30),default='0.0') ``` **_上面是帖子模型,跟answer模型相关联,answer模型就是一个帖子内的所有回答,而同时author_id是作为外键跟user模型相关联 **_ ``` class Answer(db.Model): id=Column(String(30),primary_key=True) topic_name=Column(String(30)) author_name=Column(String(30)) author_id=Column(String(30)) content=Column(Text) create_time = Column('create_time', Integer) parised_nums=Column(Integer,default=0) topic_id=Column(String(30),ForeignKey('topic.id')) ``` 上面是针对每一个回答的模型 ``` class User(db.Model): topic=relationship('Topic',backref='user',lazy='dynamic') id=Column(String(30),primary_key=True) click_nums=Column(String(30),default='0') original_nums=Column(Integer,default=0) #原创数 forward_nums=Column(Integer,default=0) #转发数 rate=Column(Integer,default=-1) #排名 answer_nums=Column(Integer,default=0) #评论数 parised_nums=Column(Integer,default=0) #获赞数 desc=Column(Text) #描述 industry=Column(String(40)) #工作行业 location=Column(String(40)) follower_nums=Column(Integer,default=0) #粉丝数 following_nums=Column(Integer,default=0) #关注数 level=Column(Integer) ``` 上面就是用到的三大模型: 下面是进行存储数据的代码: ``` if page == 0: html = requests.get('https://bbs.csdn.net/forums/Mobile/recommend').text else: html=requests.get('https://bbs.csdn.net/forums/Mobile/recommend',params={'page':page}).text bsoj = BeautifulSoup(html, 'lxml') tags= bsoj.find('div', class_='forums_table_c').tbody.find_all('tr') ''' 爬取这一页的帖子,至于第几页根据传进来的page所定义 tags就是里面帖子的集合 ''' for tag in tags: status=self.get_status(tag) score=self.get_score(tag) answer_nums,click_nums=self.get_click_nums_and_answer_nums(tag) ''' 上面这三个是需要爬取的几个东西,不需要理会 ''' url='https://bbs.csdn.net'+self.get_url(tag) ''' 这个url就是每一个帖子的url ''' topic=Topic(url,score,status,click_nums,int(answer_nums)) topic_db = Topic_Model(topic) ''' 初始化topic,这个topic_db就是topic模型的对象 ''' user = User(topic.author_id) user_db = User_Model(user) ''' user就是user模型的对象 ''' self.onhand(url,topic,topic_db,user_db,user) def onhand(self,url,topic,topic_db,user_db,user): html=requests.get(url).text bsoj=BeautifulSoup(html,'lxml') tags=bsoj.find_all('div',class_='mod_topic_wrap post') answers=[] ''' 这一步是为了抓取一个帖子内所有的回答 ''' for tag in tags: answer=Answer(topic,tag) answer_db=Answer_Model(answer) answers.append(answer_db) ''' 抓取所有回答,并将每一个回答实例化一个Answer模型的对象 ''' topic_db.answer=answers ''' 关联数据库,将所有的answer对象都放在topic里面 ''' user_db.topic.append(topic_db) ''' user与topic关联 这里是有问题的,因为如果user已经存在再数据库里,那么就不会提交,那么这个topic增加就没意义了,但是我不知道如何解决 ''' if User_Model.query.filter_by(id=user.id).first() is None: db.session.add(user_db) db.session.commit() ''' 判断是否要存储到数据库里 ''' db.session.add(topic_db) db.session.commit() for data in answers: db.session.add(data) db.session.commit() ''' 将answer集合里的所有answer提交到数据库中 ''' ``` 下面是报错信息: ![图片说明](https://img-ask.csdn.net/upload/201904/22/1555936870_832821.png) 明明已经进行判断了,如果存在就不会进行存储,照样报错了,而且奇怪的是我debug时是这一句出现了错误: ``` db.session.add(topic_db) db.session.commit() ``` 不知道如何解决,求各位大佬帮忙

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) ```

python爬虫如何只爬取标签内容

![图片说明](https://img-ask.csdn.net/upload/201904/28/1556421806_296447.png) 想爬取 paths标签下的路径 但是路径被设置为了标签 cc = json_str['paths'] 进行爬取爬取到的是整个paths标签下的内容 怎么才能只爬取标签呢 好像用beautifulsoup不行 因为html下只有三个标签 其他都被放到字典里了 怎么用解析json进行爬取呢

爬虫爬取图片时爬取的不完整的相关问题

我想要爬取lol官网的一些特定图片,不管是英雄图标还是活动图标: ![图片说明](https://img-ask.csdn.net/upload/201902/16/1550320399_707744.jpg) ![图片说明](https://img-ask.csdn.net/upload/201902/16/1550320412_888600.jpg) 由于电脑截图出了点问题,所以只能手机拍照,不好意思。 可以看到这个网页里面有很多这种图片,而且sec都是有类似的格式,以//ossweb-img.qq.com开头 我想爬取这些图片 我的代码: ``` import os from urllib.request import urlopen from urllib.request import urlretrieve from bs4 import BeautifulSoup import re baseURL="http://lol.qq.com/main.shtml?ADTAG=lolweb.v3.index" html=urlopen("https://lol.qq.com/main.shtml?ADTAG=lolweb.v3.index") bsobj=BeautifulSoup(html,"lxml") downloadlist=bsobj.findAll(src=re.compile(".*ossweb-img.qq.com.*png")) print(downloadlist) a=1 def cbk(a,b,c): 下载进度函数 per=100.0*a*b/c if per>=100: per=100 print ('%.2f'%per) for download in downloadlist: fileURL=download['src'] if fileURL is not None: fileURL="http:"+fileURL print(fileURL) urlretrieve(fileURL,"download"+str(a)+".png",cbk) a=a+1 ``` 但是它只下载了该网页第一个div容器里的图片,其他的都没下载,这时为什么

爬虫爬取aqistudy网站问题

### 一、概述 先贴上网站首页地址:https://www.aqistudy.cn/historydata/ 需要抓取对应city下的逐月数据,最终需要爬取的网站示例如下:https://www.aqistudy.cn/historydata/monthdata.php?city=%E5%8C%97%E4%BA%AC 我所使用到的代码可以参考这一篇:https://www.jianshu.com/p/87ab84828a5d 爬取这个网站的初衷只是想练习一下爬虫,并且网上有大量关于爬取该网站的示例,我选用的是python+scrapy+selenium的方法。但是 **参考目前网上的爬取方法并不可行**,主要的问题如下: ### 二、主要问题 #### 2.1.开发者模式下调试最终页面会被网站识别 ![图片说明](https://img-ask.csdn.net/upload/202003/18/1584524701_300942.png) 解决方法我已经找到,参考 https://www.liuyixiang.com/post/109399.html 主要问题在于页面上的endebug函数,对它进行对应处理后就可以进行调试。 #### 2.2.使用chromedriver模拟登陆同样会被识别 在有头模式下对最终网站模拟登陆仍会弹出上述页面(无头也尝试过),说明网站依然监测到了爬虫。我对之前的endebug函数进行了JS反混淆,但是仍看不出反混淆后的代码是如何识别到chromedriver的,或者它和2.1有什么共性因素而被识别出来(不确定是否是这样做,初学者多多包涵)。 如果对网站的JS加载进行停用,如下对middlewares设置,那么不会弹出非法调试的页面,但是需要爬取的AQI等数据无法完全加载出来。 ``` class AreaSpiderMiddleware(object): def process_request(self, request, spider): prefs = { 'profile.default_content_setting_values': { 'images': 2, 'javascript': 2 # 2即为禁用的意思 } } chrome_options = Options() chrome_options.add_experimental_option('prefs', prefs) # 禁止加载图片,JS chrome_options.add_argument("--disable-extensions"); chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) self.driver = webdriver.Chrome(chrome_options=chrome_options) if request.url != 'https://www.aqistudy.cn/historydata/': self.driver.get(request.url) js = "window.endebug = () => true;return endebug()" # 执行js self.driver.execute_script(js) time.sleep(1) html = self.driver.page_source self.driver.quit() return scrapy.http.HtmlResponse(url=request.url, body=html.encode('utf-8'), encoding='utf-8', request=request) ``` 所以我目前能想到的是可否参照2.1的方法对网页加载运行到endebug时进行暂停,然后再重写JS方法,但是具体方法不知道怎么写。 或者针这种情况是否有更好的策略,希望有大神指点下,感谢!!!

python爬虫运行后找不到爬取的图片

#!/usr/bin/python # -*- coding: UTF-8 -*- import re import urllib.request def getHtml(url): page=urllib.request.urlopen(url) html=page.read() return html html=getHtml("http://tieba.baidu.com/p/3205263090") html=html.decode('UTF-8') def getImg(html): reg=r'src="(.+?\.jpg)"pic_ext' imgre=re.compile(reg) imgList=re.findall(imgre,html) return imgList imgList=getImg(html) imgName=0 for imgPath in imgList: f=open("F:/pic/"+str(imgName)+".jpg",'wb') f.write((urllib.request.urlopen(imgPath)).read()) f.close() imgName+=1 print("all done") 代码如上,在f盘的pic文件夹下找不到图片。

python爬虫爬取标签一样时候出错

start_prices = soup.select('#J_HoverShow > tr:nth-of-type(1) > td:nth-of-type(1) > span.pay-price > span') consult_prices = soup.select('#J_HoverShow > tr:nth-of-type(3) > td:nth-of-type(2) > span.pay-price > span') 这是一个URL的两个数据,child已经改成了of-type,我爬的时候不报错,但是爬不下来。求指点

python爬虫爬取有地方出错了?

本人新手小白,在看了 慕课老师课程后写了尝试爬取静态股票信息。网站是对的,spider上也没报错。 就是没出结果,也没发现保存文档。求大佬指正。 代码如下: ``` import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url, code="utf-8"): try: r = requests.get(url) r.raise_for_status() r.encoding = code return r.text except: return "" def getStockList(lst, stockURL): html = getHTMLText(stockURL, "GB2312") soup = BeautifulSoup(html, 'html.parser') a = soup.find_all('a') for i in a: try: href = i.attrs['href'] lst.append(re.findall(r"[s][hz]\d{6}", href)[0]) except: continue def getStockInfo(lst, stockURL, fpath): count = 0 for stock in lst: url = stockURL + stock + ".html" html = getHTMLText(url) try: if html=="": continue infoDict = {} soup = BeautifulSoup(html, 'html.parser') stockInfo = soup.find('div',attrs={'class':'stock-bets'}) name = stockInfo.find_all(attrs={'class':'bets-name'})[0] infoDict.update({'股票名称': name.text.split()[0]}) keyList = stockInfo.find_all('dt') valueList = stockInfo.find_all('dd') for i in range(len(keyList)): key = keyList[i].text val = valueList[i].text infoDict[key] = val with open(fpath, 'a', encoding='utf-8') as f: f.write( str(infoDict) + '\n' ) count = count + 1 print("\r当前进度: {:.2f}%".format(count*100/len(lst)),end="") except: count = count + 1 print("\r当前进度: {:.2f}%".format(count*100/len(lst)),end="") continue def main(): stock_list_url = 'https://quote.eastmoney.com/stock_list.html' stock_info_url = 'https://gupiao.baidu.com/stock/' output_file = 'C:/BaiduStockInfo.txt' slist=[] getStockList(slist, stock_list_url) getStockInfo(slist, stock_info_url, output_file) main() ```

python 爬取表格 获取不到数据

我使用python爬取网页表格数据的时候使用 request.get获取不到页面内容。 爬取网址为:http://data.10jqka.com.cn/rank/cxg/board/4/field/stockcode/order/desc/page/2/ajax/1/free/1/ 这是Elements ![图片说明](https://img-ask.csdn.net/upload/202002/17/1581950847_829340.jpg) ``` import os import requests from lxml import etree url='http://data.10jqka.com.cn/rank/cxg/board/4/field/stockcode/order/desc/page/2/ajax/1/free/1/' #url1='http://data.10jqka.com.cn/rank/cxg/' headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'} res = requests.get(url, headers=headers) res_elements = etree.HTML(res.text) table = res_elements.xpath('/html/body/table') print(table) table = etree.tostring(table[0], encoding='utf-8').decode() df = pd.read_html(table, encoding='utf-8', header=0)[0] results = list(df.T.to_dict().values()) # 转换成列表嵌套字典的格式 df.to_csv("std.csv", index=False) ``` res.text 里的数据为 (不包含列表数据) ``` '<html><body>\n <script type="text/javascript" src="//s.thsi.cn/js/chameleon/chameleon.min.1582008.js"></script> <script src="//s.thsi.cn/js/chameleon/chameleon.min.1582008.js" type="text/javascript"></script>\n <script language="javascript" type="text/javascript">\n window.location.href="http://data.10jqka.com.cn/rank/cxg/board/4/field/stockcode/order/desc/page/2/ajax/1/free/1/";\n </script>\n </body></html>\n' ```

爬虫爬取的源代码和直接从网页打开的源代码不一样

爬虫爬取的源代码和直接从网页打开的源代码不一样 ``` import re import requests from bs4 import BeautifulSoup import webbrowser def Get_web(url): #获取网页的HTML文档。这里web_info 显示的HTML文件和直接从网页查看源文件的都不一样了 try: r = requests.get(url,headers={'user-agent':'Mozilla/5.0'}) print("!") print(r.raise_for_status()) r.encoding=r.apparent_encoding web_info=r.text print(web_info) except: print("error") return web_info def Process_text(web_info): soup = BeautifulSoup(web_info,"html.parser") script = soup.find_all("script") print(script) Processed_text=[] return Processed_text def Print_text(Processed_text): pass def main(): item="螺狮粉" for num in range(0,1): url="https://s.taobao.com/search?q=螺狮粉&s=0" webbrowser.open(url, new=0, autoraise=True) web_info = Get_web(url) Process_text(web_info) main() ```

Python爬取小说 有些章节爬得到有些爬不到 分别爬取都是可以的

``` # -*- coding:UTF-8 -*- from bs4 import BeautifulSoup import requests, sys import csv server = 'http://www.biqukan.com/' target = 'http://www.biqukan.com/1_1094/' names = [] # 存放章节名 urls = [] # 存放章节链接 def get_download_urls(): req = requests.get(url=target) html = req.text bf = BeautifulSoup(html, 'html.parser') div = bf.find('div', class_='listmain') dl = div.find('dl') dd = dl.find_all('dd') for each in dd[15:]: names.append(each.string) urls.append(server + each.find('a').get('href')) def get_contents(u): req = requests.get(url=u) html = req.text bf = BeautifulSoup(html, 'html.parser') texts = bf.find_all('div',{'id': 'content'},class_ = 'showtxt') if len(texts)>0: final = texts[0].text.replace('\xa0' * 8, '\n\n') else: final='' return final def writer( name, path,text): write_flag = True with open(path, 'a', encoding='utf-8') as f: fieldnames = ['title'] writefile = csv.DictWriter(f, fieldnames=fieldnames) writefile.writerow({'title': name+'\n'+text}) if __name__ == "__main__": url=get_download_urls() for i in range(len(names)): writer(names[i], '一念永恒.txt', get_contents(urls[i])) ``` 就是 get_contents(u) 函数里为啥有的texts长度会等于0呢,单独爬这一个页面的时候texts是有内容的呀

Python 爬虫为什么只爬取到一个html页中的部分内容。

在用Python中urlopen和read直接获取到一个网页的HTML,为什么内容与通过浏览器的 查看网页源码的方式显示内容不一样呢,获取到的HTML只有原HTML部分内容。

爬虫爬取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代码二次封装。

Python爬虫爬取网页源代码为空,求问原因&解决方案(向)

代码如下: import urllib import urllib2 import re url ='http://www.yingjiesheng.com/guangzhou-moreptjob-2.html' req = urllib2.Request(url) try: html = urllib2.urlopen(req).read() print html except urllib2.HTTPError, e: print 'The server couldn\'t fulfill the request.' print 'Error code: ', e.code except urllib2.URLError, e: print 'We failed to reach a server.' print 'Reason: ', e.reason else: print 'No exception was raised.' 代码结果如下: ![图片说明](https://img-ask.csdn.net/upload/201508/11/1439268527_619604.png) 求:在爬取网页源代码的时候返回空的原因及解决方案(或解决方向)~求大神指点迷津啊! (PS:在处理这个问题的时候,我曾在IDLE上直接敲这段代码运行,有时候可以返回源代码有时候不可以,另外,有时候我把程序运行了几十遍之后,就能返回源代码,这时候我把url的数字2改为3时(即相当下一页),又不可以了,好诡异~~)

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# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问