Python爬虫学习(一)使用Requests和正则表达式爬取简单网页

本文介绍了如何使用Python的Requests库和正则表达式爬取猫眼电影TOP100的电影信息,包括电影名称、主演、上映时间、评分和图片。首先分析网页结构,然后发送HTTP请求,接着利用正则表达式解析HTML,最后将数据保存到文本文件。完整代码展示了如何实现多进程抓取以提高效率。
摘要由CSDN通过智能技术生成

1.概述

使用Requests库和正则表达式爬取猫眼电影TOP100中的电影信息,包括电影名称、主演、上映时间、评分、图片等信息。然后将获取的信息保存到文本文件。

2.网页分析

要爬取的网页为猫眼电影TOP100 http://maoyan.com/board/4
网页页面如下所示:
猫眼TOP100
看一下页面的显示规律是怎样的,一页是显示10部电影名称。第二页的url和内容如下所示:url为:http://maoyan.com/board/4?offset=10
可以看出和第一页的url的主要差别为后面的offset,要抓取后面的网页的内容,只要在url后面加上相应的offset参数就可以了。
第二页

3.请求网页

首先请求一个页面,通过requests中的get方法,请求网页。

# 获取单个页面
def get_one_page(url):
    try:
        # 添加头部信息
        headers = {
   
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
        }
        response = requests.get(url, headers=headers)
        # 进行状态码判断,是否正确读取到网页
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None

测试是否成功获取到网页的页面信息。

def main():
    url = 'http://maoyan.com/board/4'
    html = get_one_page(url)
    print(html)

3.正则表达式

获取到网页的信息之后,就需要用正则表达式来解析网页,抓取我们所需要的信息;打开浏览器的审查元素功能,查看网页的源码,查找我们需要抓取的信息在哪个位置。
TOP100源码
以第一个电影为例:分析源码。可以看到我们所需要的信息都包含在下面的html代码中。

    <dd>
    <i class="board-index board-index-1">1</i>
    <a href="/films/1203" title="霸王别姬" class="image-link" data-act="boarditem-click" data-val="{movieId:1203}">
    <img src="//ms0.meituan.net/mywww/image/loading_2.e3d934bf.png" alt=<
### 回答1: 下面是使用Python正则表达式爬取百度贴吧中原工学院吧首页的标题的示例代码: ```python import requests import re url = 'https://tieba.baidu.com/f?kw=%E4%B8%AD%E5%8E%9F%E5%B7%A5%E5%AD%A6%E9%99%A2&ie=utf-8&pn=0' response = requests.get(url) html = response.text # 使用正则表达式提取标题 pattern = r'<a rel="noreferrer" href="/p/\d+" title="(.+?)".*?</a>' titles = re.findall(pattern, html) # 输出标题 for title in titles: print(title) ``` 解释一下代码: 首先使用 `requests` 库获取网页源代码,然后使用正则表达式提取标题。正则表达式 `r'<a rel="noreferrer" href="/p/\d+" title="(.+?)".*?</a>'` 中的 `(.+?)` 表示匹配任意字符,但只匹配到第一个 `</a>` 之前的内容,也就是标题,其他的字符使用 `.*?` 匹配。最后使用 `re.findall()` 函数提取所有匹配的标题并输出。 ### 回答2: 使用Python爬取百度贴吧中原工学院吧首页的标题,我们可以使用正则表达式配合Pythonrequests库和re库来实现。 首先,我们需要使用requests库发送HTTP请求,获取百度贴吧中原工学院吧首页的HTML源码。可以使用以下代码实现: ```python import requests url = "https://tieba.baidu.com/f?kw=中原工学院" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} response = requests.get(url, headers=headers) html = response.text ``` 接下来,我们使用正则表达式匹配出标题。根据百度贴吧的HTML结构,每个帖子的标题由`<a class="j_th_tit " target="_blank" href="...">标题内容</a>`来表示。我们可以使用以下正则表达式来匹配标题内容: ```python import re pattern = r'<a class="j_th_tit " target="_blank" href=".*?">(.*?)</a>' titles = re.findall(pattern, html) ``` 最后,我们可以遍历所有匹配到的标题,并打印出来: ```python for title in titles: print(title) ``` 整个爬取百度贴吧中原工学院吧首页标题的过程就完成了。完整代码如下: ```python import requests import re url = "https://tieba.baidu.com/f?kw=中原工学院" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} response = requests.get(url, headers=headers) html = response.text pattern = r'<a class="j_th_tit " target="_blank" href=".*?">(.*?)</a>' titles = re.findall(pattern, html) for title in titles: print(title) ``` 运行这段代码即可输出百度贴吧中原工学院吧首页的所有标题。 ### 回答3: 要用Python使用正则表达式爬取百度贴吧中原工学院吧首页的标题,首先需要使用Python中的requests库发送HTTP请求获取页面的HTML源码。然后,我们可以使用正则表达式来匹配标题的HTML元素和属性。 以下是一个基本的示例代码: ```python import requests import re # 发送HTTP请求获取页面的HTML源码 url = 'https://tieba.baidu.com/f?kw=中原工学院&ie=utf-8&tab=good' response = requests.get(url) html = response.text # 使用正则表达式匹配标题的HTML元素和属性 pattern = r'<a.*?class="j_th_tit.*?".*?>(.*?)</a>' titles = re.findall(pattern, html) for title in titles: print(title) ``` 在代码中,我们首先使用requests库的get方法发送HTTP请求获取网页的HTML源码,并将结果保存在变量`html`中。然后,我们使用正则表达式`<a.*?class="j_th_tit.*?".*?>(.*?)</a>`匹配页面中所有帖子标题的HTML元素。通过Python的`re.findall`方法,我们可以提取所有匹配到的标题文本,并将它们打印出来。 以上代码只是一个简单的示例,实际爬取过程可能需要一些优化,如处理异常情况、使用更精确的正则表达式等。使用Python正则表达式可以有效地从HTML文本中提取所需的信息,帮助我们实现爬取百度贴吧中原工学院吧首页的标题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值