python 爬虫 怎么获取标签中的注释?我用得lxml解析html
 <span>当前第9127页&nbsp;<!--共136904条-->&nbsp;&nbsp;</span>

怎么才能获取注释里的值呢?

tree=etree.HTML(page)
pagenumber=tree.xpath(xpathStr)
for i in pagenumber:
           totalpage=filter(str.isdigit,str(i))

1个回答

注释不属于xml格式了,你拿到span节点后获取它的内容,然后用字符串解析来获取注释。

fuyunkaka
fuyunkaka span节点之后获取内容,只能用正则表达式?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python之lxml输出原xml中注释问题
原XML中注释如下,经过中间的lxml代码处理后,注释部分跟原xml不一致了, “<![CDATA[@displayText:ip#@obtainType:1]]>变成了@displayText:ip#@obtainType:1”,没找到解决方法: 原XML: <test> <![CDATA[@displayText:ip#@obtainType:1]]> </test> 处理代码: from lxml import etree tree = etree.parse("test.xml") fileHandler = open("out1.xml", "wb") tree.write(fileHandler, encoding="utf-8", xml_declaration=True, pretty_print=True) fileHandler.close() 处理后输出xml: <?xml version='1.0' encoding='utf-8'?> <test> @displayText:ip#@obtainType:1 </test>
python lxml解析xslt文件,多出一行没有加标签的内容
我在用lxml解析自己写的xslt文件,将源文件转换成另一种xml格式,但是转换的结果出现了一行没有带标签的。 感觉是自己的xslt文件出来问题了,但是不知道是哪里有问题,求大神帮忙! 源文件截图: ![源文件](https://img-ask.csdn.net/upload/201811/08/1541669100_35461.png) 要提取的是concept下title和shortdesc里面的内容 我写的xslt文件: ``` <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes"/> <xsl:variable name="x" select="concept/shortdesc"/> <xsl:template match="concept/title"> <category> <pattern><xsl:value-of select="."/></pattern> <template><xsl:value-of select="$x"/></template> </category> </xsl:template> <xsl:template match="conbody"> <xsl:for-each select="section"> <category> <pattern><xsl:value-of select="title"/></pattern> <template><xsl:value-of select="p"/></template> </category> </xsl:for-each> </xsl:template> </xsl:stylesheet> ``` 最后出来的效果: ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541669242_396220.png) 图片里画红线的哪一行应该是不出现的,不知道哪行为什么会显示两遍。
python爬虫中用xpath总是获取不到内容,希望大家帮我看看这两个网页中所需内容如何定位?谢谢~
用python爬虫,代码用xpath总是获取不到内容,希望大家帮我看看这两个网页中所需内容如何定位? 1.想要获取下面网址中的 债券基本信息 ,试了很多xpath的路径都失败了,都是空的_(¦3」∠)_,下面贴出测试用的代码,希望大家能帮我看下xpath那部分为什么不对(倒数第二行),也可能是其他问题o(╥﹏╥)o ``` import requests from lxml import html url = 'http://www.chinamoney.com.cn/chinese/zqjc/?bondDefinedCode=1000040278' page = requests.Session().get(url) tree = html.fromstring(page.text) result = tree.xpath('//tbody//tr//th/text()') print(result) ``` 2.想要获取下面网址中的一个href属性 (截图中阴影部分,就是查询结果的网址),也试了很多xpath的路径也都失败了,不知道@href前应该写什么。 ![图片说明](https://img-ask.csdn.net/upload/201903/27/1553648799_758977.png) ``` url = 'http://www.chinamoney.com.cn/chinese/qwjsn/?searchValue=14中关村集MTN001' ``` 第一次提问,有什么不合适的希望谅解,工作需要,时间比较急切,麻烦大家了。━((*′д`)爻(′д`*))━!!!!
centos 两个python版本导致无法import lxml
在centos服务器上,将默认的2.6版本的python升级为2.7.3版本的,并设置2.7.3为默认的,使用sudo yum install python-lxml安装lxml时 提示如下: ![图片说明](https://img-ask.csdn.net/upload/201511/19/1447924149_670381.jpg) 但当我在默认的升级后的python2.7.3里import lxml时出错了,如下 ![图片说明](https://img-ask.csdn.net/upload/201511/19/1447924328_366680.jpg) 当我使用旧的python版本2.6来import lxml时却有用,如下 ![图片说明](https://img-ask.csdn.net/upload/201511/19/1447924405_967865.jpg) 也就是说我安装的lxml在旧版的python上有用,在升级替换后的新版的python没用, 但是我的lxml是我在升级python后安装的,使用python命令也可以看到默认的python 使用的是我新安装的版本,请问如何解决呢?谢谢。
请问我的Python爬虫代码 哪里出现了问题?(要求:爬取猫眼电影top100榜单的信息)
代码如下: ``` import requests from requests.exceptions import RequestException import time from bs4 import BeautifulSoup def get_one_page(url): try: headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} response = requests.get(url,headers=headers) if response.status_code==200: return response.text return None except RequestException: return None def page(offset): url='http://maoyan.com/board/6?offset='+str(offset) return url for j in range(10): html_doc = get_one_page(page(j*10)) soup = BeautifulSoup(html_doc,'lxml') i = 1 for dd in soup.select("dd"): print(dd.find("i","board-index board-index-"+str(i+j*10)).get_text() +dd.find("p","name").get_text() +dd.find("p","star").get_text().strip() +dd.find("p","releasetime").string +dd.find("p","score").get_text()+'\n') i = i + 1 time.sleep(1) ``` 运行反馈结果为: ``` Traceback (most recent call last): File "<ipython-input-8-95f75b1c7bd0>", line 1, in <module> runfile('H:/程序语言学习用文件夹/Spider/beautifulSoup.py', wdir='H:/程序语言学习用文件夹/Spider') File "C:\Users\pc1\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile execfile(filename, namespace) File "C:\Users\pc1\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "H:/程序语言学习用文件夹/Spider/beautifulSoup.py", line 29, in <module> soup = BeautifulSoup(html_doc,'lxml') File "C:\Users\pc1\Anaconda3\lib\site-packages\bs4\__init__.py", line 192, in __init__ elif len(markup) <= 256 and ( TypeError: object of type 'NoneType' has no len() ```
python3爬虫登陆需要验证码时的相关问题
最近学习python的爬虫,用的是lxml库。 然后如果要用爬虫登陆带验证码的网站,需要通过-检查-network-(登陆的信息)-from data,来构造爬虫。然后,from-data里面的信息是以字典的形式储存的,但是如下图:![图片说明](https://img-ask.csdn.net/upload/201905/13/1557736848_710314.jpg) 这个from-data里面,有两个名字一样的健,只是对应的值不一样,但是根本没有办法构造名字相同的两个键值对,这种情况要怎么操作,求助。。。。
python3.5.0安装lxml,导入lxml.html和lxml.etree出错
系统是win7,安装的是python3.5.0版本,lxml安装的是lxml-3.7.1-cp35-cp35m-win_amd64.whl(通过pip安装的)。安装成功后import lxml没有报错,但import lxml.html 和 lxml.etree时就报错了,报错信息如下: >>> import lxml.html Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> import lxml.html File "C:\Program Files\Python 3.5\lib\site-packages\lxml\html\__init__.py", line 54, in <module> from .. import etree File "type.pxd", line 9, in init lxml.etree (src\lxml\lxml.etree.c:220742) ValueError: builtins.type has the wrong size, try recompiling. Expected 840, got 864 >>> import lxml.etree Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> import lxml.etree File "type.pxd", line 9, in init lxml.etree (src\lxml\lxml.etree.c:220742) ValueError: builtins.type has the wrong size, try recompiling. Expected 840, got 864
Python爬虫抓取信息存储到excel表格后,怎么实行数据可视化
我用python爬去了起点中文网的一些信息,并且存储到excel中,现在想要实现数据可视化怎么写应该 import requests from lxml import etree from openpyxl import Workbook class Book(): def __init__(p): p.url = 'https://www.qidian.com/rank/hotsales?page={页数}' p.wb = Workbook() # class实例化 p.ws = p.wb.active # 激活工具表 p.ws.append(['书名', '作者', '类型', '连载状态']) # 添加对应的表头 def geturl(p): url = [p.url.format(页数 =i) for i in range(1,15)] return url def parse_url(p,url): response =requests.get(url,timeout = 5) return response.content.decode('utf-8','ignore') def get_list(p,html_str): html = etree.HTML(html_str) connect_list = [] lists = html.xpath("//div[@class='book-img-text']/ul/li//div[@class='book-mid-info']") for list in lists: item = {} item['书名'] = ''.join(list.xpath("./h4/a/text()")) item['作者'] = ''.join(list.xpath("./p[@class='author']/a[1]/text()")) item['类型'] = ''.join(list.xpath("./p[@class='author']/a[2]/text()")) item['连载状态'] = ''.join(list.xpath("./p[@class='author']/span/text()")) connect_list.append(item) return connect_list def save_list(p, connects): for connect in connects: p.ws.append([connect['书名'], connect['作者'], connect['类型'], connect['连载状态']]) print('保存小说信息成功') def run(p): url_list = p.geturl() for url in url_list: html_url =p.parse_url(url) connects = p.get_list(html_url) p.save_list(connects[:]) p.wb.save('book.xlsx') if __name__=='__main__': spider = Book() spider.run()
python 爬虫 用xpath抓取多行文本,如何实现多重遍历?
萌新学习python爬虫,在爬取网贷之家平台信息的时候,通过xpath将某一平台的网友印象三个关键词保存在一个数组中,输出到excel中。 现在我希望能够把该页面上25个平台信息都爬取到并保存,请问xpath怎么写循环?这里的25个信息代码结构是一模一样的,只有li从[1]-[25]。谢谢 ``` import requests import pandas as pd from lxml import etree from fake_useragent import UserAgent ua = UserAgent() headers['User-Agent']=ua.random url = 'https://www.wdzj.com/dangan/search?filter=e1&currentPage=1' response = requests.get(url,headers = headers).text s = etree.HTML(response) file_yinxiang = [] file_yinxiang1 = s.xpath('//*[normalize-space(@id)="showTable"]/ul/li[1]/div[2]/a/div[5]/span/text()')#实现li从1-25的循环 file_yinxiang.append(file_yinxiang1) df = pd.DataFrame(file_yinxiang) df.to_excel('wdzj_p2p.xlsx') ``` 网上查了很多资料,并不是很清楚,目前不循环是这个结果: ![图片说明](https://img-ask.csdn.net/upload/201903/18/1552887724_381412.png) 这是网页上我要爬取的内容: ![图片说明](https://img-ask.csdn.net/upload/201903/18/1552887858_653935.png)
python3 Lxml和BeautifulSoup解析网页出问题输出有问题, 求指教!
各位大神好: 下面这几句代码输出网页解析的结果为什么结果很难看: ``` import lxml.html broken_html = '<ul class=country><li>area<li>population</ul>' tree = lxml.html.fromstring(broken_html) cc = lxml.html.tostring(tree, pretty_print=True, method='html').decode() print(cc) ``` 下面是输出结果: ``` <ul class="country"> <li>area</li> <li>population</li> </ul> ``` 尽管闭合了标签,但是完全看不出嵌套关系了。上面的decode()是为了将前面的输出bytes类型转换成str类型。 而使用BeautifulSoup同样出错 ``` from bs4 import BeautifulSoup soup = BeautifulSoup(broken_html, 'html.parser') ccc = soup.prettify() print(ccc) ``` 结果,标签都补错了: ``` ”<ul class="country"> <li> area <li> population </li> </li> </ul>” ``` 第一次发帖,求各位大神给我解释下,多谢!
python爬虫的奇葩错误,socket.gaierror: [Errno 11001] getaddrinfo failed
```''' 文件名:爬取斗鱼直播间信息到jsonline文件.py ''' from __future__ import unicode_literals import multiprocessing import socket import time import re import requests from bs4 import BeautifulSoup import json # 配置socket的ip和端口 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = socket.gethostbyname("openbarrage.douyutv.com") port = 8601 client.connect((host, port)) # 获取用户昵称及弹幕信息的正则表达式 danmu = re.compile(b'type@=chatmsg.*?/nn@=(.*?)/txt@=(.*?)/.*?/level@=(.*?)/.*?/bnn@=(.*?)/bl@=(.*?)/') def sendmsg(msgstr): ''' 客户端向服务器发送请求的函数,集成发送协议头的功能 msgHead: 发送数据前的协议头,消息长度的两倍,及消息类型、加密字段和保密字段 使用while循环发送具体数据,保证将数据都发送出去 ''' msg = msgstr.encode('utf-8') data_length = len(msg) + 8 code = 689 msgHead = int.to_bytes(data_length, 4, 'little') \ + int.to_bytes(data_length, 4, 'little') + int.to_bytes(code, 4, 'little') client.send(msgHead) sent = 0 while sent < len(msg): tn = client.send(msg[sent:]) sent = sent + tn def start(roomid): ''' 发送登录验证请求后,获取服务器返回的弹幕信息,同时提取昵称及弹幕内容 登陆请求消息及入组消息末尾要加入\0 ''' msg = 'type@=loginreq/roomid@={}/\0'.format(roomid) sendmsg(msg) msg_more = 'type@=joingroup/rid@={}/gid@=-9999/\0'.format(roomid) sendmsg(msg_more) print('---------------欢迎连接到{}的直播间---------------'.format(get_name(roomid))) while True: data = client.recv(1024) danmu_more = danmu.findall(data) if not data: break else: with open(format(get_name(roomid)) + time.strftime('%Y.%m.%d', time.localtime(time.time())) + '直播弹幕', 'a') as f: try: for i in danmu_more: dmDict = {} # print(i) dmDict['昵称'] = i[0].decode(encoding='utf-8', errors='ignore') dmDict['弹幕内容'] = i[1].decode(encoding='utf-8', errors='ignore') dmDict['等级'] = i[2].decode(encoding='utf-8', errors='ignore') dmDict['徽章昵称'] = i[3].decode(encoding='utf-8', errors='ignore') dmDict['徽章等级'] = i[4].decode(encoding='utf-8', errors='ignore') dmJsonStr = json.dumps(dmDict, ensure_ascii=False) + '\n' # print(dmDict['昵称']) print(dmDict['弹幕内容']) f.write(dmJsonStr) danmuNum = danmuNum + 1 except: continue def keeplive(): ''' 发送心跳信息,维持TCP长连接 心跳消息末尾加入\0 ''' while True: msg = 'type@=mrkl/\0' sendmsg(msg) time.sleep(45) def get_name(roomid): ''' 利用BeautifulSoup获取直播间标题 ''' r = requests.get("http://www.douyu.com/" + roomid) soup = BeautifulSoup(r.text, 'lxml') return soup.find('a', {'class', 'Title-anchorName'}).string # 启动程序 if __name__ == '__main__': room_id = input('请输入房间ID: ') p1 = multiprocessing.Process(target=start, args=(room_id,)) p2 = multiprocessing.Process(target=keeplive) p1.start() p2.start() ```在别人电脑可以运行,但是在自己的电脑上就报错 附上报错截图,有大神可以帮忙处理一下吗?万分感谢 报错: E:\pythonzzz\venv\Scripts\python.exe E:/pythonzzz/爬虫/z3.py Traceback (most recent call last): File "E:/pythonzzz/爬虫/z3.py", line 17, in <module> host = socket.gethostbyname("openbarrage.douyutv.com") socket.gaierror: [Errno 11001] getaddrinfo failed Process finished with exit code 1
python爬虫时为什么网页源码经过xpth处理后无法解析了呢
## 在爬取一个小说网站的时候我发现在网页的response中可以看到相关的值,但是在获取的时候就出现了问题 ### 具体问题是这样的, - 爬取的网站链接为:https://www.qiushuzw.com/t/38890/10253657.html ``` from lxml import etree import requests class Xiaoshuospider: def __init__(self): self.start_url = 'https://www.qiushuzw.com/t/38890/10253656.html' self.headers = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Cache-Control": "max-age=0", "Connection": "keep-alive", "Cookie": "BAIDU_SSP_lcr=https://www.80txt.com/txtml_38890.html; Hm_lvt_c0ce681e8e9cc7e226131131f59a202c=1554447305; Hm_lpvt_c0ce681e8e9cc7e226131131f59a202c=1554447305; UM_distinctid=169ec4788554ea-0eba8d0589d979-1a201708-15f900-169ec4788562c1; CNZZDATA1263995655=929605835-1554443240-https%253A%252F%252Fwww.80txt.com%252F%7C1554443240", "Host": "www.qiushuzw.com", "If-Modified-Since": "Thu, 31 Jan 2019 03:00:17 GMT", "If-None-Match": 'W/"5c5264c1 - 3f30"', "Referer": "https://www.80txt.com/txtml_38890.html", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36", } def parse(self): res = requests.get(self.start_url,headers=self.headers).content.decode() html = etree.HTML(res) content = html.xpath("div[@class='book_content']/text()") print(content) def run(self): self.parse() if __name__ == '__main__': xiaoshuo = Xiaoshuospider() xiaoshuo.run() ``` - 根据xpath规则我将这些信息处理以后无法找到相应小说文本内容,小说的详细信息无法使用xpath提取出来 ## 有没有哪位大佬也遇到相应的问题
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爬虫结果为空TT
新手修改了网上代码,想要爬百度新闻的标题和简介,不知道为什么运行结果是空。在mac自带的python2上运行: ``` from urllib import urlopen import csv import re from bs4 import BeautifulSoup import sys reload(sys) sys.setdefaultencoding("utf-8") for k in range(1,36): url = "http://news.baidu.com/ns?word=低保&pn=%s&cl=2&ct=1&tn=news&rn=20&ie=utf-8&bt=0&et=0"% ((k-1)*20) csvfile = file("Dibao.csv", "ab+") writer = csv.writer(csvfile) content = urlopen(url).read() soup = BeautifulSoup(content,"lxml") list0 = [] list1 = [] list2 = [] list3 = [] for i in range(1,20): hotNews = soup.find_all("div", {"class", "result"})[i] a1=hotNews.find(name="a", attrs={"target": re.compile("_blank")}) list0.append(a1.text) a2=hotNews.find(name="p", attrs={"class": re.compile("c-author")}) t1=a2.text.split()[0] list1.append(t1) t2 = a2.text.split()[1] list2.append(t2) if t2.find(u"年") == 4: t3 = a2.text.split()[2] list3.append(t3) else: list3.append(" ") #将数据写入csv data = [] for i in range(0,20): data.append((list0[i], list1[i], list2[i],list3[i])) writer.writerows(data) csvfile.close() print "第" + str(k) + "页完成" ``` 报错: Traceback (most recent call last): File "<stdin>", line 12, in <module> IndexError: list index out of range 不懂参数过范围什么意思,新闻一共37页,每页20条。 希望有大神能帮忙看一下,多谢啦~
python爬虫爬取的图片存在错误打不开
python3写的不知道哪里错了,求教大家帮看看 import requests from bs4 import BeautifulSoup ''' https://www.mzitu.com/ ''' def get_girls(url): headers = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" } Picreferer = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" } path = 'D:/mzitu/' html = requests.get(url,headers=headers).text all_list = BeautifulSoup(html,'lxml').find('ul',id="pins").find_all('li') for _ in all_list: girl_title = _.get_text() girl_url = _.find('img')['data-original'] print("{}:{}".format(girl_title,girl_url)) response = requests.get(girl_url,headers=headers) fileName = girl_title + '.jpg' print('正在保存图片' + fileName) with open(fileName,'wb') as f: f.write(response.content) if __name__ =="__main__": for page in range(1,229): url = 'https://www.mzitu.com/page/%s/' % page get_girls(url)
渣渣请教python爬虫xpath问题
各位大神,小弟我最近爬取闲鱼商品的时候出现个问题: 这个是网页源码截图,我想爬取里面这个赞数: ![图片说明](https://img-ask.csdn.net/upload/201609/15/1473950224_39834.jpg) 网页链接:https://2.taobao.com/item.htm?id=538626368021 下面是我的源码: ``` #! /usr/bin/env python #coding=utf-8 import urllib from bs4 import BeautifulSoup import re from lxml import etree """ https://s.2.taobao.com/list/list.htm?\ spm=2007.1000337.0.0.WOjjAq&st_trust=1&page=3&q=%C0%D6%B8%DF&ist=0 """ def get_html(page=1, q="lego"): """获取商品列表页源代码,返回源代码content""" params = { "spm":"2007.1000337.0.0.WOjjAq", "st_trust":"1", "page":page, "q":q, "ist":"0" } info = urllib.urlencode(params) url = "https://s.2.taobao.com/list/list.htm?" + info html = urllib.urlopen(url) content = html.read() html.close() return content def get_url(content): """从商品列表页源代码中获取商品页url,返回url的列表""" soup = BeautifulSoup(content, "lxml") div_box = soup.find_all('div', class_='item-info') url_list = [] for div in div_box: url=div.find('h4', class_='item-title').a['href'] url_c = "https:" + url url_list.append(url_c) return url_list def get_product(url): html = urllib.urlopen(url) content = html.read() html.close() content1 = content.decode('gbk').encode('utf-8') rempat = re.compile('&') content1 = re.sub(rempat,'&amp;',content1) root = etree.fromstring(content1) zan = root.xpath('.//div[@id="J_AddFav"]/em/text()]') return zan if __name__ == '__main__': content = get_html(1,"lego") url_list = get_url(content) url1 = url_list[1] print url1 print get_product(url1) ``` 问题出现在这里: ``` root = etree.fromstring(content1) ``` ![图片说明](https://img-ask.csdn.net/upload/201609/15/1473950415_793148.jpg) 除了将&替换成&amp;外没有对网页源码进行改动,不知为何源码会报错…… 谢谢各位大神了,我是技术渣(我是学化学的……最近工作需要,拿闲鱼来练手,结果卡在这里一天了)
python爬虫爬取斗图啦上的图片,打开爬取的图片显示图片错误
![图片说明](https://img-ask.csdn.net/upload/201908/03/1564803739_452406.png) ```![图片说明](https://img-ask.csdn.net/upload/201908/03/1564803394_897302.png) import requests,re,os from bs4 import BeautifulSoup def get_url(url): headers={ 'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36', 'Referrer':url } res = requests.get(url,headers=headers) text = res.text soup = BeautifulSoup(text,'lxml') divs = soup.find('div',class_='page-content text-center') a_s = divs.find_all('a',attrs={'class': 'col-xs-6 col-sm-3'}) for a in a_s: #print(a) herf = a['href'] img = a.find('img') print(img) #获取最内层标签方法如下 if a.img['class']==['gif']: pass else: alt = a.img['alt'] alt = re.sub(r'[,@??!!:。]','',alt) #print(alt) data = a.img['data-original'] print(data) datastr = '.'+data.split('.')[-1] filename = alt + datastr #print(filename) #print(os.getcwd()) if os.path.exists(os.getcwd() + "\斗图啦\\"+filename): print('文件已经存在') else: filename = os.getcwd() + "\斗图啦\\"+filename print(filename) with open(filename,'w') as fp: fp.write(data) def main(): if os.path.exists(os.getcwd()+'\斗图啦\\'): print('文件夹已存在') else: os.mkdir(os.getcwd() + "\斗图啦\\") #for x in range(1,101): # url = 'http://www.doutula.com/photo/list/?page=%d' %x # get_url(url) url = 'http://www.doutula.com/photo/list/?page=1' get_url(url) if __name__ == '__main__': main() ``` ```
Python 在安装lxml库的时候 一直搞不定
![图片说明](https://img-ask.csdn.net/upload/201603/02/1456909161_93198.png) 各位哥哥 哥哥们,不知道这是什么原因,也不知道我是否安装成功了 lxml 我也下载了 setuptools-20.2.2 ,按步骤安装的,可是还是不行,请各位哥哥 哥哥们帮小弟解决一下吧~ 痛苦中……
python2.7.3安装libxml2,导入import lxml.html报错,求大神指教
系统是red hat ,自带的是2.6.6版本的python,但最近需要使用scrapy需要安装2.7.3版本的 ,通过yum install 安装的libxml2,安装成功后import lxml没有报错,但import lxml.html 时就报错了,报错信息如下: >>> import lxml.html Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/site-packages/lxml/html/__init__.py", line 12, in <module> from lxml import etree File "lxml.etree.pyx", line 89, in init lxml.etree (src/lxml/lxml.etree.c:140164) TypeError: encode() argument 1 must be string without null bytes, not unicode 求各位python大神指导...
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
Android 9.0系统新特性,对刘海屏设备进行适配
其实Android 9.0系统已经是去年推出的“老”系统了,这个系统中新增了一个比较重要的特性,就是对刘海屏设备进行了支持。一直以来我也都有打算针对这个新特性好好地写一篇文章,但是为什么直到拖到了Android 10.0系统都发布了才开始写这篇文章呢?当然,一是因为我这段时间确实比较忙,今年几乎绝大部分的业余时间都放到写新书上了。但是最主要的原因并不是这个,而是因为刘海屏设备的适配存在一定的特殊性
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问