文档章节

爬虫_糗事百科(正则表达式)

o
 osc_1ee7cxmx
发布于 2018/08/06 17:11
字数 226
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 1 import requests
 2 import re
 3 from lxml import etree
 4 
 5 headers = 'Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/60.0'
 6 
 7 
 8 def get_html(url):
 9     try:
10         response = requests.get(url, headers)
11         response.raise_for_status()
12         response.encoding = 'utf-8'
13         return response.text
14     except:
15         print('get_html() faild')
16 
17 
18 def parse_html(html):
19     # 正则表达式
20     hrefs = re.findall(r'<a class="contentHerf" href=(.*?)', html, re.S)
21     # xpath
22     element = etree.HTML(html)
23     hrefs = element.xpath('//a[@class="contentHerf"]/@href')
24     
25     contents = re.findall(r'<div class="content".*?<span>(.*?)</span>', html, re.S)
26     
27     new_content = []
28     for content in contents:
29         content = re.sub('<.*?>', '', content)
30         x = content.strip()
31         new_content.append(x)
32     return new_content
33 
34 
35 def main():
36     page_num = 13
37     for i in range(1, page_num+1):
38         url = 'https://www.qiushibaike.com/text/page/{}/'.format(i)
39         html = get_html(url)
40         contents = parse_html(html)
41         print(contents)
42 
43 
44 if __name__ == '__main__':
45     main()
hrefs = re.findall(r'<a class="contentHerf" href=(.*?)', html, re.S)

这个链接的正则表达式感觉写的没问题啊,可是匹配不到东西,奇了怪了,先放着吧,xpath可以匹配到

运行结果

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Java线程池

前言 Java中对线程池的抽象是ThreadPoolExecutor类,Executors是一个工具类,内置了多种创建线程池的方法: newFixedThreadPool:固定长度线程池 newCachedThreadPool :可缓存线程池 newSin...

nullpointerxyz
27分钟前
35
0
Python笔记:用Python制作二维码

这些年,二维码在我国的日常使用频率特别大。因为其具有简单及安全性吧!除了用网络工具制作二维码,其实用JavaScript或Python也可以制作二维码,而且更有个性。 示例一(制作普通黑白二维码...

tengyulong
39分钟前
0
0
Redis-初体验/数据结构

定义: Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种 NoSQL(not-only sql,泛指非关系型数据库...

心田已荒
41分钟前
15
0
如何在保留订单的同时从列表中删除重复项? - How do you remove duplicates from a list whilst preserving order?

问题: Is there a built-in that removes duplicates from list in Python, whilst preserving order? 是否有内置的程序在保留顺序的同时从Python列表中删除重复项? I know that I can us...

fyin1314
今天
29
0
以太坊智能合约开发常见的10个安全问题

本文介绍CheckMarx安全研究小组通过扫描公开的以太坊智能合约所发现的Solidity智能合约开发中常见的十大安全问题,其中__未检查的外部调用__ 和 高成本循环 分列排行榜前两名。该安全问题排行...

区块链教程
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部