import requests import re import csv url = 'https://movie.douban.com/top250' headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.1.4031 SLBChan/105', } response = requests.get(url) pattern = r'<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>' results = re.findall(pattern, response.text, re.S) with open('douban_top250.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['电影名称', '评分']) for result in results: writer.writerow(result) print('豆瓣电影top250爬取完成,已保存至douban_top250.csv文件中')
时间: 2024-03-31 11:33:25 浏览: 75
这段代码是一个爬取豆瓣电影top250并将结果保存至CSV文件的Python程序。程序使用requests库向豆瓣电影top250网页发送HTTP请求,并使用正则表达式从网页源代码中提取出电影名称和评分信息。然后,程序使用csv库将结果写入CSV文件中。
具体实现过程如下:
1. 导入requests、re和csv库。
2. 指定豆瓣电影top250的URL和请求头信息。
3. 使用requests库向豆瓣电影top250网页发送HTTP请求,并获取响应内容。
4. 使用正则表达式从网页源代码中提取出所有电影名称和评分信息。
5. 创建一个CSV文件,指定文件名、编码和列名。
6. 使用csv库将列名写入CSV文件中。
7. 遍历所有电影名称和评分信息,将它们写入CSV文件中。
8. 关闭CSV文件。
9. 输出提示信息,表示爬取和保存结果成功。
需要注意的是,这段代码仅供学习和参考,如果您想要爬取豆瓣电影top250,请确保遵守相关法律法规和网站规定,不要进行商业用途和侵犯他人权益的行为。
相关问题
import requests import re # import csv from bs4 import BeautifulSoup url = "https://movie.douban.com/top250" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57" } resp = requests.get(url, headers = headers) page_content = resp.text #图片 resp = BeautifulSoup(page_content,"html.parser") pict = resp.find("ol",attrs={"class": "grid_view"}) imgs = pict.find_all("img") print(imgs) for i in imgs: src = i.get("src") print(src) name = src.split("/")[-1] img_c = requests.get(src) with open(f"douban-imgs/{name}",mode="wb") as f: f.write(img_c.content)讲解一下这段代码
这段代码是一个Python爬虫程序,用于从豆瓣电影Top250页面中提取电影海报的图片链接,并下载这些图片到本地。下面是代码的具体讲解:
1. 导入所需的Python库:
```python
import requests
import re
from bs4 import BeautifulSoup
```
其中,requests库用于发送HTTP请求,re库用于正则表达式匹配,BeautifulSoup库用于解析HTML页面。
2. 设置请求头:
```python
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57"
}
```
这里设置了一个User-Agent请求头,用于伪装成浏览器发送请求,避免被网站反爬虫机制封禁。
3. 发送HTTP请求并获取页面内容:
```python
url = "https://movie.douban.com/top250"
resp = requests.get(url, headers = headers)
page_content = resp.text
```
这里使用requests库发送GET请求,获取豆瓣电影Top250页面的HTML源代码。由于该页面的编码为UTF-8,因此使用text属性获取响应内容。
4. 解析HTML页面:
```python
resp = BeautifulSoup(page_content,"html.parser")
pict = resp.find("ol",attrs={"class": "grid_view"})
imgs = pict.find_all("img")
```
这里使用BeautifulSoup库解析HTML页面,找到包含电影海报图片的`<ol>`标签,并获取其中所有的`<img>`标签。find()方法用于查找第一个匹配的标签,find_all()方法用于查找所有匹配的标签。
5. 提取图片链接并下载图片:
```python
for i in imgs:
src = i.get("src")
name = src.split("/")[-1]
img_c = requests.get(src)
with open(f"douban-imgs/{name}",mode="wb") as f:
f.write(img_c.content)
```
这里遍历所有的`<img>`标签,提取其中的`src`属性,即图片链接。然后根据链接发送HTTP请求,获取图片的二进制数据,并将数据写入文件中。这里使用了Python的with语句,可以自动管理文件的打开和关闭。图片保存在本地的"douban-imgs/"目录下,文件名为图片链接的最后一部分。
import requests import re import csv url = "https://movie.douban.com/top250" headers = { "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" } responses = requests.get(url,headers=headers) print(responses.text) #把提取的文本text取名page-content page_content = responses.text #分析网页源代码,寻找限定元素 object = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)' r'</span>.*?<p class="">.*?<br>(?P<year>.*?) .*?<span ' r'class="rating_num" property="v:average">(?P<score>.*?)</span>.*? ' r'<span>(?P<people>.*?)评价</span>',re.S) result = object.finditer(page_content) f = open("Biaoge.csv",mode="w") csvwrite = csv.writer(f) for it in result: # print(it.group("name")) # print(it.group("year").strip()) # print(it.group("score")) # print(it.group("people")) dic = it.groupdict() dic['year']= dic['year'].strip() csvwrite.writerow(dic.values()) f.close() print("over!")将这个代码使用多进程和自动化
为了使用多进程和自动化,我们可以使用Python的multiprocessing和selenium库。multiprocessing库用于创建进程,selenium库用于自动化浏览器操作。
首先,我们需要安装selenium库和WebDriver,WebDriver是浏览器的驱动程序,可以让我们通过代码来控制浏览器,模拟人类的浏览行为。我们可以根据自己的浏览器版本下载相应的WebDriver,然后将WebDriver的路径添加到系统环境变量中。
接下来,我们可以使用multiprocessing库来创建进程,每个进程都负责爬取一部分数据。在每个进程中,我们可以使用selenium库来自动化操作浏览器,先打开豆瓣电影Top250页面,然后逐页爬取数据,并将数据写入到csv文件中。
下面是使用多进程和自动化的代码示例:
阅读全文