Python7个爬虫小案例详解(附源码)中篇

Python7个爬虫小案例详解中篇攻略

简介

本文介绍了《Python7个爬虫小案例详解》的中篇,涉及到的7个爬虫小案例分别是:爬取糗事百科段子、爬取妹子图、爬取当当图书、爬取百度百科、爬取链家租房信息、爬取香港天文台天气预报和爬取斗鱼直播。本文将对这些案例进行详细讲解,并附上源码供参考。

篇章内容

  1. 爬取糗事百科段子

本案例涉及到的技术点主要有:requests库、xpath、正则表达式。通过requests库获取糗事百科网页内容,然后利用xpath解析出需要的内容,再通过正则表达式对结果进行进一步处理,最后将结果输出保存。

示例代码:

```python
import requests
from lxml import etree

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('https://www.qiushibaike.com/text/', headers=headers)
html = response.content.decode('utf-8')
selector = etree.HTML(html)

content_list = selector.xpath('//div[@class="article block untagged mb15 typs_hot"]')

for content in content_list:
text = content.xpath('./div[@class="content"]/span/text()')[0]
text = text.strip()
print(text)
```

  1. 爬取妹子图

本案例涉及到的技术点主要有:requests库、xpath、正则表达式、多线程。通过requests库获取妹子图网页内容,然后利用xpath解析出需要的内容,再通过正则表达式对结果进行进一步处理,最后将结果输出保存。由于获取妹子图需要爬取大量图片,为了提高爬取效率,本案例使用了多线程技术。

示例代码:

```python
import requests
from lxml import etree
import re
import os
from queue import Queue
from threading import Thread

class Producer(Thread):
def init(self, url_queue, img_queue, headers):
super().init()
self.url_queue = url_queue
self.img_queue = img_queue
self.headers = headers

   def run(self):
       while True:
           if self.url_queue.empty():
               break
           url = self.url_queue.get()
           response = requests.get(url, headers=self.headers)
           html = response.content.decode('utf-8')
           selector = etree.HTML(html)
           img_list = selector.xpath('//div[@class="pic"]/a/img/@src')
           self.img_queue.put(img_list)

class Consumer(Thread):
def init(self, url_queue, img_queue, headers, path):
super().init()
self.url_queue = url_queue
self.img_queue = img_queue
self.headers = headers
self.path = path

   def run(self):
       while True:
           if self.img_queue.empty() and self.url_queue.empty():
               break
           img_list = self.img_queue.get()
           for img_url in img_list:
               response = requests.get(img_url, headers=self.headers)
               img_name = re.findall(r'/(\w+\.jpg$)', img_url)[0]
               img_path = os.path.join(self.path, img_name)
               with open(img_path, 'wb') as f:
                   f.write(response.content)

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'
}

url_queue = Queue()
for i in range(1, 10):
url = 'http://www.meizitu.com/a/list_1_{}.html'.format(i)
url_queue.put(url)

img_queue = Queue()

path = './images'
if not os.path.exists(path):
os.mkdir(path)

producers = [Producer(url_queue, img_queue, headers) for i in range(10)]
consumers = [Consumer(url_queue, img_queue, headers, path) for i in range(10)]

for p in producers:
p.start()

for c in consumers:
c.start()

for p in producers:
p.join()

for c in consumers:
c.join()
```

总结

本文讲解了《Python7个爬虫小案例详解》中篇的完整攻略,包括了爬取糗事百科段子和爬取妹子图的示例说明。在实际使用时,需要根据自己的需求进行修改和优化,但是本文提供的示例可以作为一个基础框架供参考。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python7个爬虫小案例详解(附源码)中篇 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python求质数的3种方法

    Python求质数的3种方法 在Python中,求质数的方法有很多,本文将会介绍其中的3种方法。 方法1:暴力枚举 暴力枚举是最基础的求质数方法。从2开始遍历到该数的平方根。如果能被整除,则说明该数不是质数,否则该数是质数。 示例: def is_prime(num): if num < 2: return False for i in range(2…

    python 2023年6月3日
    00
  • 基于python3实现倒叙字符串

    下面是基于Python3实现倒序字符串的攻略: 目录 准备工作 方法一:使用字符串切片 方法二:使用反转(reverse)函数 示例一:使用字符串切片实现倒叙字符串 示例二:使用反转函数实现倒叙字符串 总结 准备工作 在实现代码前,先要了解Python的字符串和字符串切片。Python中的字符串是一种不可变类型(immutable),它们可以用单引号、双引号…

    python 2023年6月5日
    00
  • 如何在Python中做指数和对数的曲线拟合

    下面是如何在Python中做指数和对数的曲线拟合的完整攻略。 1. 准备数据 首先,我们需要准备需要拟合的数据,例如指数和对数函数示例代码: import numpy as np x = np.array([0, 1, 2, 3, 4, 5]) y1 = np.exp(x) y2 = np.log(x + 1) 2. 导入库 其次,我们需要导入所需的库,例如…

    python-answer 2023年3月25日
    00
  • 详解Python 通过cookie注入状态

    Python 通过 Cookie 注入状态可以提高某些应用程序的攻击性,但同时也为攻击者带来了极大的风险,因此仅限于在合法的渗透测试场景下使用。 以下是通过 Python 通过 Cookie 注入状态的完整攻略: 1. 扫描网站 首先,需要使用漏洞扫描器或手动方式来查找有安全漏洞的网站。例如使用 nmap 或 burp suite 对目标网站进行扫描。 2.…

    python-answer 2023年3月25日
    00
  • Python3读取文件常用方法实例分析

    以下是针对“Python3读取文件常用方法实例分析”的完整攻略: Python3读取文件常用方法实例分析 1. 文件读取基础知识 在Python中,我们可以使用内置的open()函数来打开一个文件,然后读取或者写入其中的内容。open()函数的第一个参数是文件的路径,第二个参数是以何种模式打开文件,如下: f = open(‘file.txt’, ‘r’) …

    python 2023年6月5日
    00
  • python中对列表的删除和添加方法详解

    下面是关于Python中对列表的删除和添加方法的详细攻略,包含两个示例说明。 添加元素 在Python中,我们可以使用append()方法向列表末尾添加一个元素,使用insert()方法指定位置插入一个元素。下面是示例: # 使用append()方法向列表末尾添加一个元素 my_list = [1, 2, 3] my_list.append(4) print…

    python 2023年5月13日
    00
  • Python3+PyCharm+Django+Django REST framework配置与简单开发教程

    Python3+PyCharm+Django+DjangoRESTframework配置与简单开发教程 本文将详细讲解如何使用Python3、PyCharm、Django和DjangoRESTframework进行Web开发。我们将从环境配置开始,一步步地介绍如何创建Django项目和DjangoRESTframework应用,并编写简单的API接口。 环境…

    python 2023年5月15日
    00
  • Python安装第三方库及常见问题处理方法汇总

    Python安装第三方库及常见问题处理方法汇总 安装第三方库的方式 在Python中安装第三方库有多种方式,下面介绍比较常见的几种: 使用pip安装 pip是Python中最常用的第三方库安装工具,可以通过以下命令安装: pip install 库名 下载源码安装 有些第三方库没有通过pip发布,只能通过官方网站下载源码进行安装。下载后解压缩,进入该目录,执…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部