抓取网页新闻(【技巧】如何用两个方法来抽去正文内容?)
优采云 发布时间: 2021-10-20 19:21抓取网页新闻(【技巧】如何用两个方法来抽去正文内容?)
我主要使用了两种方法来提取正文内容。第一种方法,比如xpath、css、正则表达式、beautifulsoup,在解析新闻页面的时候,总是遇到各种莫名其妙的问题。,让人头疼不已。后面红色标的是第二种方法,主要推荐报文库
在导师公司,需要使用重搜索引擎尽快获取想要的内容,然后建立语料库,所以我使用python的beautifulsoup和urllib抓取了一些web内容用于训练语料库。
搜索关键词是“公司名称”,其实只需要三步即可完成。第一个是直接在百度首页搜索,然后从百度结果搜索页面上的链接中获取,第二个是在页面主页面输入结果搜索那些链接,然后抓取正文内容。三是保存获取到的正文内容,对内容进行切分。例如,如果您在正文中找到人们说过的话,则可以使用谚语和表达方式。,说起来,曾经用“”来判断,这些就不赘述了,主要是提取正文内容。
提取链接
通过网页的源码发现,这些超链接在标签之间(不同的网站有不同的格式)。最好用beautifulsoup提取。如果使用 urllib 提取其他 url,则不易区分。例如下图
代码显示如下:
<p>#encoding=utf-8
#coding=utf-8
import urllib,urllib2
from bs4 import BeautifulSoup
import re
import os
import string
#得到url的list
def get_url_list(purl):
#连接
req = urllib2.Request(purl,headers={'User-Agent':"Magic Browser"})
page = urllib2.urlopen(req)
soup = BeautifulSoup(page.read())
#读取标签
a_div = soup.find('div',{'class':'main'})
b_div = a_div.find('div',{'class':'left'})
c_div = b_div.find('div',{'class':'newsList'})
links4 = []
#得到url的list
for link_aa in c_div:
for link_bb in link_aa:
links4.append(link_bb.find('a'))
links4 = list(set(links4))
links4.remove(-1)
links4.remove(None)
return links4
#从list中找到想要的新闻链接
#找到要访问的下一个页面的url
def get_url(links):
url = []
url2 = ''
url3 = ''
url4 = ''
i = 0
for link in links:
if link.contents == [u'后一天']:
continue
#上一页 和 下一页 的标签情况比较复杂
#取出“上一页”标签的url(貌似不管用)
if str(link.contents).find(u'/> ') != -1:
continue
#取出“下一页”标签的url
if str(link.contents).find(u'