以下是详细讲解“Python爬虫爬取新浪微博内容示例【基于代理IP】”的完整攻略,包括骤和两个示例。
步骤
使用Python爬虫爬取新浪微博内容的步骤如下:
- 导入库:
import requests
、from bs4 import BeautifulSoup
- 设置请求头和代理IP:
headers = {}
、proxies = {}
- 发送请求:
response = requests.get(url, headers=headers, proxies=proxies)
- 解析响应:
soup = BeautifulSoup(response.text, 'html.parser')
- 查找标签:
soup.find_all('tag', attrs={'attribute': 'value'})
- 获取数据:
tag.text、
tag[‘attribute’]`
示例1:爬取微博热搜榜
以下是一个示例代码,用于爬取新浪微博热搜榜:
import requests
from bs4 import BeautifulSoup
url = 'https://s.weibo.com/top/summary?cate=realtimehot'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
proxies = {
'http': 'http://127.0.0.1:1080',
'https': 'https://127.0.0.1:1080'
}
response = requests.get(url, headers=headers, proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')
hot_list = soup.find_all('td', attrs={'class': 'td-02'})
for hot in hot_list:
print(hot.a.text)
在这个示例中,我们首先导入了requests库和BeautifulSoup库。然后,我们定义了一个URL字符串、请求头字典和代IP字典。接着,我们使用get()
函数发送GET请求,并将响应存储在一个变量中。然后创建了一个BeautifulSoup对象,并将响应文本和解析器类型作为参数传递。接着,我们使用find_all()
函数查找热搜榜,并将它们存在一个列表中。最后,我们遍历列表,并输出每个热搜的文本内容。
示例2:爬取微博用户信息
以下是一个例代码,用于爬取新浪微博用户信息:
import requests
from bs4 import BeautifulSoup
url = 'https://weibo.cn/u/1234567890'
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'}
proxies = {
'http': 'http://127.0.0.1:1080',
'https': 'https://127.0.0.1:1080'
}
response = requests.get(url, headers=headers, proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')
name = soup.find('div', attrs={'class': 'ut'}).h2.text.strip()
location = soup.find('div', attrs={'class': 'tip2'}).text.strip().split()[0]
print('用户名:', name)
print('所在地:', location)
在这个示例中,我们首先导入了requests库和BeautifulSoup库。然后,我们定义了一个URL字符串、请求头字典和代理IP字典。接着,我们使用get()
函数GET请求,并将响应存储在一个变量中。然后创建了一个BeautifulSoup对象,并将响应文本和解析器类型作为参数传递。接着,我们使用find()
函数查找用户名和所在地,并将它们存储在变中。最后,我们输出用户名和所在地。
注意事项
在使用Python爬虫爬取新浪微博内容时,需要以下事项:
- 在发送请求时,需要使用requests库发送GET或POST请求,并将请求头字典和代理IP字典作为参数传递。
- 在解析响应时,可以使用BeautifulSoup库或其他解析器进行解析。
- 在使用
find()
或find_all()
函数找标签时,需要将标签名称和属性作为参数传递,并将结果存储在一个变量或列表中。 - 获取标签属性和文本时,需要使用
tag['attribute']
和tag.text
的形式。 - 在使用代理IP,需要确保代理IP可用,并将其设置为请求的代理IP。