
1. Requests
首先,咱们得聊聊Requests。这货简直就是爬虫界的瑞士军刀,功能强大,使用简单。你只需要几行代码,就能发出HTTP请求,获取你想要的数据。别小看这几行代码,它能帮你打开新世界的大门。
import requests
url = 'http://example.com'
response = requests.get(url)
print(response.text)
看到了吗?就这么几行,你就能拿到网页的源代码。当然,这只是个开始,Requests还能处理各种HTTP请求,比如POST、PUT、DELETE,还能处理cookies、headers,简直就是爬虫界的全能王。
2.BeautifulSoup
拿到了网页源代码,下一步就是解析。这时候,BeautifulSoup就派上用场了。这货能帮你从网页中提取出你想要的数据,不管是文本、图片还是链接,都能轻松搞定。
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.find('title').text
print(title)
看,这就是网页的标题。BeautifulSoup就像一把锋利的刀,能帮你从一堆乱麻中找到那根线头。
3. re
有时候,网页的数据不是那么规整,这时候就需要用到正则表达式了。Python的re模块就是干这个的。它能帮你匹配、查找、替换那些复杂的字符串模式。
import re
phone = re.findall(r'\d{3}-\d{3}-\d{4}', text)
print(phone)
看到了吗?这就是正则表达式的威力,它能帮你从一堆看似无序的字符串中,找到你想要的电话号码。
4. aiohttp
如果你要爬的网站数据量巨大,或者你想要提高爬取效率,那么异步请求就显得尤为重要了。aiohttp就是处理异步HTTP请求的黑马。它能帮你在等待一个请求的同时,发起另一个请求,大大提高了效率。
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
async with aiohttp.ClientSession() as session:
html = await fetch(session, 'http://example.com')
print(html)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
这就是异步请求的魅力,它能帮你在爬虫的世界里,跑得更快,爬得更远。
5. Pandas
爬取的数据,总得有个地方存吧。这时候,Pandas就派上用场了。它能帮你把数据存储到DataFrame中,方便你进行后续的数据分析和处理。
import pandas as pd
data = {'Name': ['Alice', 'Bob'], 'Age': [24, 27]}
df = pd.DataFrame(data)
print(df)
看,这就是Pandas的魔力,它能帮你把数据整理得井井有条。
6. Scrapy
最后,不得不提的就是Scrapy。这货功能强大,使用简单。它是一个快速的高级爬虫框架,用于抓取网站并从页面中提取结构化的数据。
import scrapy
class MySpider(scrapy.Spider):
name = 'example'
start_urls = ['http://example.com']
def parse(self, response):
for h2 in response.xpath('//h2'):
yield {'title': h2.xpath('.//text()').get()}这就是Scrapy的力量,它能帮你构建一个完整的爬虫项目