Python爬虫爬取新浪微博内容示例【基于代理IP】

  • Post category:Python

以下是详细讲解“Python爬虫爬取新浪微博内容示例【基于代理IP】”的完整攻略,包括骤和两个示例。

步骤

使用Python爬虫爬取新浪微博内容的步骤如下:

  1. 导入库:import requestsfrom bs4 import BeautifulSoup
  2. 设置请求头和代理IP:headers = {}proxies = {}
  3. 发送请求:response = requests.get(url, headers=headers, proxies=proxies)
  4. 解析响应:soup = BeautifulSoup(response.text, 'html.parser')
  5. 查找标签:soup.find_all('tag', attrs={'attribute': 'value'})
  6. 获取数据: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爬虫爬取新浪微博内容时,需要以下事项:

  1. 在发送请求时,需要使用requests库发送GET或POST请求,并将请求头字典和代理IP字典作为参数传递。
  2. 在解析响应时,可以使用BeautifulSoup库或其他解析器进行解析。
  3. 在使用find()find_all()函数找标签时,需要将标签名称和属性作为参数传递,并将结果存储在一个变量或列表中。
  4. 获取标签属性和文本时,需要使用tag['attribute']tag.text的形式。
  5. 在使用代理IP,需要确保代理IP可用,并将其设置为请求的代理IP。