importurllib#python中用于获取网站的模块(图)

优采云 发布时间: 2021-08-13 02:14

  importurllib#python中用于获取网站的模块(图)

  import urllib#module 用于在python中获取网站

  导入 urllib2、cookielib

  部分网站访问时需要cookie,python处理cookie代码如下:

  cj = cookielib.CookieJar()

  opener =urllib2.build_opener( urllib2.HttpCookieProcessor(cj) )

  urllib2.install_opener (opener)

  通常我们需要在网站中搜索我们需要的信息。这里有两种情况:

  1. 首先,可以直接更改网址,获取要搜索的页面:

  def GetWebPage( x ): #我们定义了一个获取页面的函数,x是用来呈现你在页面上搜索到的内容的参数

  url ='#39;+'你要搜索的参数'#根据自己的页面情况适当修改

  page = urllib2.urlopen(url)

  pageContent = page.read()

  return pageContent#返回HTML格式的页面信息

  2. 其次,需要使用post方法,把你搜索到的内容放到postdata中,然后返回你需要的页面

  def GetWebPage( x ): #我们定义了一个获取页面的函数,x是用来呈现你在页面上搜索到的内容的参数

  url ='#39;#这个网址就是你进入搜索界面的地方

  postData = urllib.urlencode({various ‘post’ parameter input} )#这里输入的post参数需要自己检查

  req= urllib2.Request (url, postData)

  pageContent = urllib2.urlopen(请求)。读( )

  return pageContent#返回HTML格式的页面信息

  获取到我们需要的网页信息后,我们还需要从获取到的网页中进一步获取我们需要的信息。这里我推荐使用 BeautifulSoup 模块。 Python 没有附带它。您可以在百度谷歌下载安装。 BeautifulSoup 的意思是“美味的汤”。你需要做的是从一锅汤里找到你喜欢吃的东西。

  import re#正则表达式,用于匹配字符

  from bs4 import BeautifulSoup# 导入 BeautifulSoup 模块

  soup =BeautifulSoup(pageContent)#pageContent 是我们上面搜索的页面

  Soup 是 HTML 中的所有标签(tag) BeautifulSoup 处理格式化后的字符串。一个标准的标签形式是:

  hwkobe24

  通过一些过滤的方法,我们可以从汤中得到我们需要的信息:

  (1) find_all (name, attrs, recursive, text, **kwargs)

  这里,我们通过在标签上添加约束来获取需要的标签列表,例如soup.find_all('p')是查找名为'p'的标签,而soup.find_all(class = "tittle" ) 就是查找所有class属性为"tittle"的标签,soup.find_all(class = pie('lass'))表示所有class属性中收录'lass'的标签。这里用到了正则表达式(可以自己学,很有用)

  得到我们想要的所有标签的列表后,我们遍历这个列表,然后在标签中获取你需要的内容。通常我们需要标签的文字部分,也就是网页上显示的文字。代码如下:

  tagList =soup.find_all(class="tittle")#如果标签比较复杂,可以使用多个过滤条件,使过滤更加严格

  对于 tagList 中的标签:

  打印标签文本

  f.write (str(tag.text) )#将此信息写入本地文件以备后用

  (2)find( name, attrs, recursive, text, **kwargs )

  它和find_all()方法唯一的区别是find_all()方法的返回结果是一个收录一个元素的列表,而find()方法直接返回结果

  (3)find_parents() find_parent( )

  find_all() 和 find() 只搜索当前节点的所有子节点、孙节点等。

  find_parents() 和 find_parent() 用于搜索当前节点的父节点,搜索方法与普通标签搜索方法相同,搜索文档搜索文档中收录的内容

  (4)find_next_siblings() find_next_sibling()

  这两个方法使用.next_siblings属性来推进所有后面解析的兄弟标签节点。 find_next_siblings() 方法返回所有满足条件的后续兄弟节点,而 find_next_sibling() 只返回满足条件的下一个兄弟节点。一个标签节点

  (5)find_previous_siblings() find_previous_sibling()

  这两个方法使用 .previous_siblings 属性来迭代当前标签之前解析的兄弟标签节点。 find_previous_siblings() 方法返回之前所有满足条件的兄弟节点, find_previous_sibling() 方法返回第一个满足条件的兄弟节点。兄弟节点

  (6)find_all_next() find_next()

  这两个方法使用 .next_elements 属性来迭代当前标签之后的标签和字符串。 find_all_next() 方法返回所有符合条件的节点, find_next() 方法返回第一个符合条件的节点

  (7)find_all_previous() 和 find_previous()

  这两个方法使用 .previous_elements 属性来迭代当前节点前面的标签和字符串。 find_all_previous() 方法返回所有符合条件的节点, find_previous() 方法返回第一个符合条件的节点。

  实际代码示例:(抓取网页下的指定链接)

  来自 bs4 小鬼

  #htmltext

  html_text=""

  soup=BeautifulSoup(html_text,'html.parser')

  a=soup.select('a')

  for i in a:

  如果 i.string=="关键词":

  findb_ur=i['href']

  #输出搜索a标签中的字符串得到的网页链接

  # 打印(findb_url)

  #findb_url="https:"+finburl

  alist=soup.find_all('a)

  对于 a 列表:

  1.通过下标操作方法

  href=a['href']

  打印(htref)

  2.通过attrs属性

  href=a.attrs['href']

  打印(href)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线