爬虫之网页解析——正则表达式、BeautifulSoup、xpath

本文介绍了如何解析网页内容,包括使用正则表达式进行基础处理,利用BeautifulSoup库解析HTML和XML文档,以及运用XPath进行高效定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 解析内容

得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。

  1. 正则表达式处理
    def get_zhushi_info(url):
        #urls='https://so.gushiwen.org/shiwen2017/ajaxshiwencont.aspx?id=45c396367f59&value=zhu'
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0",
            "referer": "https://www.gushiwen.org/",
            'x-requested-with': 'XMLHttpRequest'
        }
        '''
        #每个ajax请求要传递的参数
        parm = {
            'id':'7b561d38e677',
            'value':'zhu'
        }
        #构造ajax请求url
        ajax_url = url + urlencode(parm)
        '''
        # 调用ajax请求
        response = requests.get(url, headers=headers).content.decode('utf-8')
        p = r"<p>.+?<br />"
    
        p_br = re.findall('<p>(.*?)<br />', response)
    
        txtlist=[]
        for item in p_br:
            html = etree.HTML(item)
            txtlist.append(html.xpath('string(.)'))
    
        return ''.join(txtlist)

     

  2. BeautifulSoup解析处理(BeautifulSoup就是一个专门用来从html和xml文档中提取数据的库)
  3. XPath解析处理
        req = urllib.request.Request(url)
        req.add_header('User-Agent', header)
    
        response_result = urllib.request.urlopen(req).read()
    
        html = response_result.decode('utf-8')
        html = etree.HTML(html)
    
        # result=html.xpath('//div[@class="main3"]/div[@class="left"]/div[2]/a/*')
        author_href = html.xpath(
            '//div[@class="main3"]/div[@class="right"]/div[@class="sons"]/div[@class="cont"]/a/@href')
        authors = html.xpath(
            '//div[@class="main3"]/div[@class="right"]/div[@class="sons"]/div[@class="cont"]/a/text()')
    
    
        for author,href in zip(authors,author_href):
            with open(cipai_path+author+'.txt','w',encoding='utf-8') as wf:
                author_id=href.split('_')[1].split('.aspx')[0]
                wf.writelines('https://so.gushiwen.org/authors/authorvsw_'+author_id+'A1.aspx')

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值