lxml

python3 网络爬虫.2

匿名 (未验证) 提交于 2019-12-02 22:51:30
BeautifuleSoup库的名字取自刘易斯・卡罗尔在《爱丽丝梦游仙境》里的同名诗歌。在故事中,这首歌是素甲鱼唱的。就像它在仙境中的说法一样,BeautifulSoup尝试化平淡为神奇。它通过定位HTML标签来格式化和组织复杂的网络信息,用简单易用的Python对象为我们展现XML结构信息。 由于BeautifulSoup库不是Python标准库,因此我们需要单独安装这个库,才能使用它。对于这个库的安装,我们这里秉着简单的原则,就直接利用pycharm这个IDLE进行库的自动下载和导入。 首先我们进入pycharm的主界面,单击file-〉settings-〉Project:untitled-〉Project Interpreter,如下图: 在上图中我们会看到一个绿色的加号,这时我们单击这个加号,会跳出如下的界面(pycharm在这个地方有时候很慢,会一直在这个界面刷新): 这时我们在搜索框中输入“bs4”,然后选择列表中的bs4,然后进行安装,如下图: 这样我们就完成了BeautifulSoup这个库的安装,下面我们就可以来使用它了。 关于这个库的官方文档解释的是很详细的,一定要看一看: 点击打开链接 下面我就简单说一下这个库的一些方面。 首先呢,我们还是从一个例子开始我们的学习: [python] view plain copy print ? #coding:utf -

python爬虫分章节保存小说

匿名 (未验证) 提交于 2019-12-02 22:51:30
#coding:utf-8import requests,re,osfrom bs4 import BeautifulSoupnames = [] # 存放章节名urls = [] # 存放章节链接nums = 0 # 章节数url = 'http://www.xbiquge.la/20/20948/'response = requests.get(url)response.encoding='utf-8' #解决乱码问题,直接response.encoding"""解析url,查找标签div,id='list',在查找到的列表中找出a标签"""soup = BeautifulSoup(response.text,'lxml')div =soup.find_all('div',id='list')a_bf = BeautifulSoup(str(div),'lxml')a = a_bf.find_all('a')"""将a标签中的链接href添加到urls中,将div标签的属性添加到目录中"""for div in a: names.append(div.string) urls.append("http://www.xbiquge.la"+div.get('href'))"""在该路径下,检查是否有该文件夹"""div1 = soup.find_all('div',id=

Python Beautiful Soup 4

匿名 (未验证) 提交于 2019-12-02 22:51:30
Beautiful Soup 4 Beautiful Soup 是一个灵活方便的网页解析库,利用它不用编写正则表达式即可方便地提取的网页信息 官方文档: https://www.crummy.com/software/BeautifulSoup/bs4/doc/ Beautiful Soup 支持 Python 标准库中的 HTML 解析器,还支持一些第三方的解析器 主要有几种: from bs4 import BeautifulSoup BeautifulSoup ( markup , "html.parser" ) # Python 标准库 BeautifulSoup ( markup , "lxml" ) # lxml HTML 解析器 BeautifulSoup ( markup , "xml" ) # lxml XML 解析器 = BeautifulSoup(markup, ["lxml", "xml"]) BeautifulSoup ( markup , "html5lib" ) # html5lib 官方推荐使用 lxml from bs4 import BeautifulSoup soup = BeautifulSoup ( markup , "lxml" ) print ( soup . prettify ()) 瀵硅薄 Beautiful Soup 将复杂

python 重装系统安装scrapy报错

匿名 (未验证) 提交于 2019-12-02 22:51:30
超过三个月的时间没有敲过代码了,突然再次接触代码实在有点痛苦,渣渣笔记本再次开机时间很长,好吧,没关系,忍受不了就重装系统,nice! 重装以后什么都重新下载安装也是比较痛苦的,像什么IDE、MYSQL、PYCHARM、ANACONDA,之后就各种pip 在pycharm中装scrapy中报错了, 以前直接装好,这次有点蒙蔽,说什么VC++啥啥啥的,咱也不懂,直接上图吧。 假象中应该一切都很顺利,耐心等待错误的出来吧 看了很多很多很多最后呢找到一个简单粗暴直接的办法,废话不多说,图文并茂! 安装scrapy需要:pyOpenSSL、lxml、pywin32、wheel什么依赖包, 出错就是缺一个包里面的内容(反正我是这么理解的哈) 补上对应文件,然后安装就可以了 2.下载   #我是直接下载下来放在了python/Lib路径下,主要是懒

xpath

妖精的绣舞 提交于 2019-12-02 22:42:32
XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言。它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。 所以在做爬虫时,我们完全可以使用XPath来做相应的信息抽取。本节中,我们就来介绍XPath的基本用法。 1. XPath概览 XPath的选择功能十分强大,它提供了非常简洁明了的路径选择表达式。另外,它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等。几乎所有我们想要定位的节点,都可以用XPath来选择。 XPath于1999年11月16日成为W3C标准,它被设计为供XSLT、XPointer以及其他XML解析软件使用,更多的文档可以访问其官方网站: https://www.w3.org/TR/xpath/ 。 2. XPath常用规则 表4-1列举了XPath的几个常用规则。 表4-1 XPath常用规则 表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 这里列出了XPath的常用匹配规则,示例如下: 1 //title[@lang='eng'] 这就是一个XPath规则,它代表选择所有名称为 title ,同时属性 lang 的值为 eng 的节点

Python: Modifying an XML File

雨燕双飞 提交于 2019-12-02 21:49:54
问题 I'm stuck, I've written a code that looks for specific index in xml file. But when find that Index won't create me a new xml file with just that Index in and constant parameters. it returns an error: ...rba_u_xml.py", line 29, in <module> ObjectDictionary.remove(Variable) File "C:\Python27\lib\xml\etree\ElementTree.py", line 337, in remove self._children.remove(element) ValueError: list.remove(x): x not in list this is my code: import xml.etree.ElementTree as ET tree = ET.parse('master.xml')

Find python lxml version

自作多情 提交于 2019-12-02 21:40:51
How can I find the installed python-lxml version in a Linux system? >>> import lxml >>> lxml.__version__ Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute '__version__' >>> from pprint import pprint >>> pprint(dir(lxml)) ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'get_include', 'os'] >>> Can't seem to find it You can get the version by looking at etree : >>> from lxml import etree >>> etree.LXML_VERSION (3, 0, -198, 0) Other versions of interest can be: etree.LIBXML_VERSION , etree.LIBXML

lxml.etree.XMLSyntaxError

只愿长相守 提交于 2019-12-02 21:37:46
# 在学习LXML库的时候遇到了一个问题lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 4 and head, line 6, column 8 百度发现这是由于自己html代码书写不规范,不符合xml解析器的使用规范导致 # 解决办法自己创建解析器,同时增加parser参数 text = "flower.html"parser = etree.HTMLParser(encoding="utf-8")html = etree.parse(text,parser=parser)result = etree.tostring(html, pretty_print=True,encoding="utf-8")print(result) 来源: https://www.cnblogs.com/walxt/p/11763309.html

python中用xpath解析html

匿名 (未验证) 提交于 2019-12-02 20:32:16
用xpath接下一个tbale,并提取值. 首先安装lxml包 pip3 install lxml from lxml import etree # 获取返回响应的html文件 response = requests . get ( url = url , cookies = cookie ) # ElementTree对象 selector = etree . HTML ( response . text ) # 获得所有的tr trs = selector . xpath ( '//table[@class="tbl_type4"]/tbody/tr' ) # 遍历,提取每个td的值 for tr in trs : td1 = tr . xpath ( './td[1]/text()' ) [ 0 ] . strip ( ) td2 = tr . xpath ( './td[2]/a/text()' ) [ 0 ] . strip ( ) td3 = tr . xpath ( './td[3]/div/a/@title' ) [ 0 ] . strip ( ) 文章来源: https://blog.csdn.net/weixin_43784462/article/details/91992394

爬虫基础知识

荒凉一梦 提交于 2019-12-02 19:55:26
概述 定义:   爬虫的本质:通过编写程序模拟浏览器上网,获取页面源码或在动态数据,通过解析返回结果获取想要的数据的过程 分类: 通用爬虫:获取整张页面的源码数据 聚焦爬虫:获取指定区域的数据,如页面加载时的一些动态数据 增量式爬虫:获取网站更新的数据 常见的反扒机制: robots.txt协议:可以在网页后面加上robots.txt,该协议规定允许哪些服务器爬取数据,但该协议像"无人地摊一样".(解决方法,当作看不到即可) UA协议:在请求头中有一个User-agent字段,该字段的值是关于浏览器的信息,有些网站没有该字段不让访问(解决方法:复制浏览器的请求ua字段) 验证码:通过输入验证码才能访问(采用云打码等第三方平台解码,然后填写到验证码输入框 cookie:没有携带cookie的不允许访问(采用自动cookie处理即requests模块的Session实例化的对象代替requests) 检测ip:对于短期内多次数访问封ip(在requests请求中添加代理ip参数即可) 动态参数:通过给之前的网页分配一个隐藏的参数,页面请求是需要携带该参数,否则不允许访问(解析源码获取该参数) 动态加载数据:用户在浏览器的操作加载不同数据,(通过获取动态加载数据的url请求获取队形数据) requests模块 requses模块是可以通过模拟浏览器发送请求获取页面的响应数据,安装模块