以下是“Python爬虫爬取新浪微博内容示例【基于代理IP】”的完整攻略:
步骤1:安装必要的Python库
在使用Python爬虫爬取新浪微博内容之前,需要安装必要的Python库。以下是一个示例:
pip install requests
pip install beautifulsoup4
pip install lxml
pip install PyExecJS
在这个例子中,我们使用pip命令安装了requests、beautifulsoup4、lxml和PyExecJS库。
步骤2:获取代理IP
在爬取新浪微博内容之前,我们需要获取代理IP。以下是一个示例:
import requests
url = 'https://www.xicidaili.com/nn/'
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)
print(response.text)
在这个例子中,我们使用requests库发送了一个GET请求,并获取了西刺代理网站的HTML代码,并使用print()函数打印了HTML代码。
步骤3:解析代理IP
在获取代理IP后,我们需要使用BeautifulSoup模块解析HTML代码,并提取代理IP。以下是一个示例:
from bs4 import BeautifulSoup
html = '<html><head><title>Example</title></head><body><p>This is an example.</p></body></html>'
soup = BeautifulSoup(html, 'html.parser')
ip_list = soup.select('#ip_list tr')
for ip in ip_list:
tds = ip.select('td')
if tds:
ip_address = tds[1].text
ip_port = tds[2].text
print(ip_address + ':' + ip_port)
在这个例子中,我们定义了一个为html的字符串,其中包含HTML代码。然后,我们使用BeautifulSoup类解析HTML代码,并将存储在名为soup的变量中。接着,我们使用CSS选择器查找代理IP元素,并使用for循环遍历每个代理IP元素,并使用select()方法查找IP地址和端口号,并打印IP地址和端口号。
步骤4:使用代理IP爬取新浪微博内容
在获取代理IP并解析后,我们可以使用requests库发送HTTP请求,并使用代理IP。以下是一个示例:
import requests
url = 'https://weibo.com/'
proxies = {
'http': 'http://127.0.0.1:8080',
'https': 'https://127.0.0.1:8080'
}
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, proxies=proxies)
print(response.text)
在这个例子中,我们使用requests库发送了一个GET请求,并获取了新浪微博的HTML代码,并使用print()函数打印了HTML代码。我们还使用了proxies参数来指定代理IP。
示例1:爬取新浪微博热搜榜
以下是一个示例代码,用于演示如何使用Python爬虫爬取新浪微博热搜榜:
import requests
from bs4 import BeautifulSoup
url = 'https://s.weibo.com/top/summary?cate=realtimehot'
proxies = {
'http': 'http://127.0.0.1:8080',
'https': 'https://127.0.0.1:8080'
}
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, proxies=proxies)
soup = BeautifulSoup(response.text, 'lxml')
hot_list = soup.select('.td-02')
for hot in hot_list:
print(hot.text)
在这个例子中,我们使用requests库发送了一个GET请求,并获取了新浪微博热搜榜的HTML代码。然后,我们使用BeautifulSoup库解析HTML代码,并使用CSS选择器查找热搜榜元素。最后,我们使用for循环遍历每个热搜榜元素,并使用select()方法查找热搜榜内容,并打印热搜榜内容。
示例2:爬取新浪微博用户信息
以下是一个示例代码,用于演示如何使用Python爬虫爬取新浪微博用户信息:
import requests
from bs4 import BeautifulSoup
url = 'https://weibo.com/u/1234567890'
proxies = {
'http': 'http://127.0.0.1:8080',
'https': 'https://127.0.0.1:8080'
}
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, proxies=proxies)
soup = BeautifulSoup(response.text, 'lxml')
user_name = soup.select_one('.username').text
user_location = soup.select_one('.pf_item .W_ficon').next_sibling.strip()
user_description = soup.select_one('.pf_intro').text.strip()
print('用户名:', user_name)
print('所在地:', user_location)
print('个人简介:', user_description)
在这个例子中,我们使用requests库发送了一个GET请求,并获取了新浪微博用户信息的HTML代码。然后,我们使用BeautifulSoup库解析HTML代码,并使用CSS选择器查找用户信息元素。最后,我们使用select_one()方法查找用户信息,并打印用户信息。
以上就是“Python爬虫爬取新浪微博内容示例【基于代理IP】”的完整攻略,包括安装必要的Python库、获取代理IP、解析代理IP、使用代理IP爬取新浪微博内容和两个示例代码,分别演示了如何爬取新浪微博热搜榜和用户信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫爬取新浪微博内容示例【基于代理IP】 - Python技术站