想爬取该电影网页的电影名称,但为什么啥也不显示?
求各位指点
#测试
from urllib import request
from bs4 import BeautifulSoup
head={}
head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0'
req=request.Request('https://movie.douban.com/explore',headers=head)
response=request.urlopen(req)
html=response.read()
html=html.decode('utf-8')
soup=BeautifulSoup(html,'html.parser')
#print(soup.prettify())
object=soup.select('div.drc-subject-info-title')
for movie in object:
name=movie.find('span').text
print(name)
首先,你需要先获取该电影网页的源代码,可以使用urllib库中的request模块来实现。接着,你需要使用BeautifulSoup库来解析该网页的源代码,并通过查找特定的HTML元素来获取电影名称。
下面是一个简单的爬虫示例代码,可以帮助你开始学习爬虫:
from urllib import request
from bs4 import BeautifulSoup
# 设置请求头,模拟浏览器请求
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 = 'http://www.xxx.com'
req = request.Request(url, headers=headers)
response = request.urlopen(req)
html = response.read()
# 解析网页源代码,获取电影名称
soup = BeautifulSoup(html, 'html.parser')
movies = soup.find_all('div', class_='movie') # 假设电影名称在class为'movie'的div元素中
for movie in movies:
name = movie.find('h2').text # 假设电影名称在h2元素中
print(name)
当然,这只是一个简单的示例代码,具体的实现还需要根据你要爬取的网页结构来进行调整。另外,注意在爬取网页时要尊重网站的规则,不要频繁请求同一个页面。
有接口请求的建议直接爬取接口
import requests
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0',
'Host': 'm.douban.com',
'Referer': 'https://movie.douban.com/explore',
'Accept': 'application/json, text/plain, */*'
}
params={
'refresh': 0,
'start': 0,
'count': 20,
'selected_categories': {},
'uncollect': 'false',
'tags': ''
}
req = requests.get('https://m.douban.com/rexxar/api/v2/movie/recommend',headers=headers).json()
movie_list = req.get('items')
for item in movie_list:
name = item.get('title','')
print(name)