c 抓取网页数据( 5.ROBOT协议的基本语法:爬虫的网页抓取1.)

优采云 发布时间: 2021-11-08 08:16

  c 抓取网页数据(

5.ROBOT协议的基本语法:爬虫的网页抓取1.)

   import urllib.request # 私密代理授权的账户 user = "user_name" # 私密代理授权的密码 passwd = "uesr_password" # 代理IP地址 比如可以使用百度西刺代理随便选择即可 proxyserver = "177.87.168.97:53281" # 1. 构建一个密码管理对象,用来保存需要处理的用户名和密码 passwdmgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() # 2. 添加账户信息,第一个参数realm是与远程服务器相关的域信息,一般没人管它都是写None,后面三个参数分别是 代理服务器、用户名、密码 passwdmgr.add_password(None, proxyserver, user, passwd) # 3. 构建一个代理基础用户名/密码验证的ProxyBasicAuthHandler处理器对象,参数是创建的密码管理对象 # 注意,这里不再使用普通ProxyHandler类了 proxyauth_handler = urllib.request.ProxyBasicAuthHandler(passwdmgr) # 4. 通过 build_opener()方法使用这些代理Handler对象,创建自定义opener对象,参数包括构建的 proxy_handler 和 proxyauth_handler opener = urllib.request.build_opener(proxyauth_handler) # 5. 构造Request 请求 request = urllib.request.Request("http://bbs.pinggu.org/") # 6. 使用自定义opener发送请求 response = opener.open(request) # 7. 打印响应内容 print (response.read())

  5.ROBOT协议

  在目标 URL 后添加 /robots.txt,例如:

  

  第一个意思是,对于所有爬虫来说,它们不能在 /? 开头的路径无法访问匹配/pop/*.html的路径。

  最后四个用户代理的爬虫不允许访问任何资源。

  所以Robots协议的基本语法如下:

  二、 爬虫爬虫

  1.爬虫的目的

  实现浏览器的功能,通过指定的URL直接返回用户需要的数据。

  一般步骤:

  2.网络分析

  获取到相应的内容进行分析后,其实需要对一段文本进行处理,从网页中的代码中提取出你需要的内容。BeautifulSoup 可以实现通常的文档导航、搜索和修改文档功能。如果lib文件夹中没有BeautifulSoup,请使用命令行安装。

   pip install BeautifulSoup

  3.数据提取

   # 想要抓取我们需要的东西需要进行定位,寻找到标志 from bs4 import BeautifulSoup soup = BeautifulSoup('',"html.parser") tag=soup.meta # tag的类别 type(tag) >>> bs4.element.Tag # tag的name属性 tag.name >>> 'meta' # attributes属性 tag.attrs >>> {'content': 'all', 'name': 'robots'} # BeautifulSoup属性 type(soup) >>> bs4.BeautifulSoup soup.name >>> '[document]' # 字符串的提取 markup='房产' soup=BeautifulSoup(markup,"lxml") text=soup.b.string text >>> '房产' type(text) >>> bs4.element.NavigableString

  4.BeautifulSoup 应用实例

   import requests from bs4 import BeautifulSoup url = "http://www.cwestc.com/MroeNews.aspx?gd=2" html = requests.get(url) soup = BeautifulSoup(html.text,"lxml")

  

   #通过页面解析得到结构数据进行处理 from bs4 import BeautifulSoup soup=BeautifulSoup(html.text,"lxml") #定位 lptable = soup.find('table',width='780') # 解析 for i in lptable.find_all("td",width="680"): title = i.b.strong.a.text href = "http://www.cwestc.com"+i.find('a')['href'] # href = i.find('a')['href'] date = href.split("/")[4] print (title,href,date)

  

  4.Xpath 应用实例

  XPath 是一种用于在 XML 文档中查找信息的语言。XPath 可用于遍历 XML 文档中的元素和属性。XPath 是 W3C XSLT 标准的主要元素,XQuery 和 XPointer 都建立在 XPath 表达式之上。

  如何使用四个标签

   from lxml import etree html=""" test NO.1NO.2NO.3 onetwo crossgatepinggu """ #这里使用id属性来定位哪个div和ul被匹配 使用text()获取文本内容 selector=etree.HTML(html) content=selector.xpath('//div[@id="content"]/ul[@id="ul"]/li/text()') for i in content: print (i)

  

   #这里使用//从全文中定位符合条件的a标签,使用“@标签属性”获取a便签的href属性值 con=selector.xpath('//a/@href') for i in con: print (i)

  

   #使用绝对路径 #使用相对路径定位 两者效果是一样的 con=selector.xpath('/html/body/div/a/@title') print (len(con)) print (con[0],con[1])

  

  三、动态网页和静态网页的区别

  来源百度:

  静态网页的基本概述

  静态网页的 URL 形式通常以 .htm、.html、.shtml、.xml 等为后缀。静态网页一般是最简单的 HTML 网页。服务器和客户端是一样的,没有脚本和小程序,所以不能移动。在HTML格式的网页上,还可以出现各种动态效果,比如.GIF格式的*敏*感*词*、FLASH、滚动字母等。这些“动态效果”只是视觉效果,与下面要介绍的动态网页是不同的概念。.

  静态网页的特点

  动态网页的基本概述

  动态网页以.asp、.jsp、.php、.perl、.cgi等形式后缀,并有一个符号——“?” 在动态网页 URL 中。动态网页与网页上的各种*敏*感*词*、滚动字幕等视觉“动态效果”没有直接关系。动态网页也可以是纯文本内容或收录各种*敏*感*词*内容。这些仅针对网页的特定内容。表现形式,无论网页是否具有动态效果,通过动态网站技术生成的网页都称为动态网页。动态网站也可以利用动静结合的原理。使用动态网页的地方适合使用动态网页。如果需要静态网页,

  动态网页应具备以下特点:

  总结:当一个页面的内容发生变化时,URL也会相应地发生变化。基本上,它是一个静态页面,反之则是一个动态页面。

  四、 动态网页和静态网页的爬取

  1.静态网页

   import requests from bs4 import BeautifulSoup url = "http://www.cwestc.com/MroeNews.aspx?gd=1" html = requests.get(url) soup = BeautifulSoup(html.text,"lxml") soup.text[1900:2000]

  

   import requests from bs4 import BeautifulSoup url = "http://www.cwestc.com/MroeNews.aspx?gd=2" html = requests.get(url) soup = BeautifulSoup(html.text,"lxml") soup.text[1900:2000]

  

  总结:以上两个网址的区别在于最后一个数字。在原创网页上的每个点,下一页的 URL 和内容同时更改。我们判断该网页为静态网页。

  2.动态网页

   import requests from bs4 import BeautifulSoup url = "http://news.cqcoal.com/blank/nl.jsp?tid=238" html = requests.get(url) soup = BeautifulSoup(html.text,"lxml") soup.text

  

  

  如果抓取网页后看不到任何信息,则证明它是一个动态网页。正确的爬取方法如下。

  

   import urllib import urllib.request import requests url = "http://news.cqcoal.com/manage/newsaction.do?method:webListPageNewsArchivesByTypeid" post_param = {'pageNum':'1',\ 'pageSize':'20',\ 'jsonStr':'{"typeid":"238"}'} return_data = requests.post(url,data =post_param) content=return_data.text content

  

  至此,这篇教你如何使用Python快速爬取你需要的数据的文章就介绍完了。更多Python爬取数据相关内容,请在html中文网站搜索之前的文章或继续浏览下面的相关文章,希望大家以后多多支持html中文网站!

  以上就是教大家如何使用Python快速抓取所需数据的详细内容。更多详情请关注其他相关html中文网站文章!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线