Python抓取特定内容_使用python抓取网页上的特定内容

优采云 发布时间: 2021-05-14 01:31

  Python抓取特定内容_使用python抓取网页上的特定内容

  import urllib#用于在python中获取网站的模块

  导入urllib2,cookielib

  某些网站访问时需要cookie,python处理cookie的代码如下:

  cj = cookielib.CookieJar()

  opener = urllib 2. build_opener(urllib 2. HttpCookieProcessor(cj))

  urllib 2. install_opener(开启程序)

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

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

  def GetWebPage(x):#我们定义了一个获取页面的函数,x是用于显示您在页面上搜索的内容的参数

  url ='#39; +“您要搜索的参数”#根据您自己的页面条件进行适当修改

  page = urllib 2. urlopen(url)

  pageContent = page.read()

  返回pageContent#以HTML格式返回页面信息

  2.第二种方法,您需要使用post方法,将搜索到的内容放入postdata中,然后返回所需的页面

  def GetWebPage(x):#我们定义了一个获取页面的函数,x是用于显示您在页面上搜索的内容的参数

  url ='#39; #此URL是您进入搜索界面的位置

  postData = urllib.urlencode({各种'post'参数输入})#此处的post参数输入需要您自己检查

  req = urllib 2.请求(url,postData)

  pageContent = urllib 2. urlopen(req)。 read()

  返回pageContent#以HTML格式返回页面信息

  获取所需的网页信息后,需要从获取的网页中进一步获取所需的信息。在这里,我建议使用BeautifulSoup模块。 Python不附带它。您可以将其下载并安装在百度Google上。 BeautifulSoup译为“美味汤”。您需要做的是从一锅汤中找到想要吃的东西。

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

  从bs4导入BeautifulSoup#导入BeautifulSoup模块

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

  汤是HTML中的所有标签(标签)BeautifulSoup处理格式化的字符串,标准的标签形式是:

  hwkobe24

  通过一些过滤方法,我们可以从汤中获取所需的信息:

  ([1) find_all(名称,属性,递归,文本,**假名)

  在这里,我们通过在标签上添加约束来获得所需标签的列表,例如,soup.find_all('p')是要找到一个名为'p'的标签,然后是soup.find_all(class =“ tittle” )将查找所有class属性为“ tittle”的标签,并且soup.find_all(class = heap('lass'))表示class属性中所有收录'lass'的标签。这里使用正则表达式(您可以自己学习,非常有用)

  获得所需的所有标签的列表之后,遍历此列表,然后在标签中获得所需的内容。通常,我们需要标记的文本部分,即网页上显示的文本。代码如下:

  tagList = soup.find_all(class =“ tittle”)#如果标记较为复杂,则可以使用多个过滤条件使过滤条件更严格

  用于tagList中的标签:

  打印tag.text

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

  ([2) find(名称,attrs,递归,文本,** 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 imp

  #htmltext

  html_text =“”

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

  a = soup.select('a')

  对于我在:

  如果i.string ==“ 关键词”:

  findb_ur = i ['href']

  #输出通过在a标签中搜索字符串而获得的网页链接

  #print(findb_url)

  #findb_url =“ https:” + finburl

  alist = soup.find_all('a)

  对于列表中的a:

  1.下标操作方式

  href = a ['href']

  print(htref)

  2.通过attrs属性

  href = a.attrs ['href']

  print(href)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线