编写一个python爬虫程序,用正则表达式爬取当当网电子书(http://edangdang.com/index page.html)“今日特惠”中所有图书的以下信息: (1)书名一bookName (2) 作者一author (3)售价一 sellPrice 并将以上信息保存到csv 文档中。
时间: 2024-04-06 18:33:13 浏览: 109
爬虫_python_一款更新抓取one文艺网站的代码的程序
好的,我可以帮你解决这个问题。首先,我们需要安装 requests 和 BeautifulSoup 库,用于获取网页内容和解析网页:
```
pip install requests
pip install beautifulsoup4
```
然后,我们就可以开始编写爬虫程序了。以下是完整的代码:
```python
import requests
from bs4 import BeautifulSoup
import re
import csv
def get_books():
url = 'http://e.dangdang.com/index_page.html'
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'
}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
books = []
for book in soup.find_all('div', class_='book_info'):
book_name = book.find('a', class_='name').text.strip()
author = book.find('a', class_='author').text.strip()
sell_price = re.findall(r'\d+\.\d+', book.find('span', class_='price_n').text)[0]
books.append([book_name, author, sell_price])
return books
def save_to_csv(books):
with open('books.csv', 'w', newline='', encoding='utf-8-sig') as file:
writer = csv.writer(file)
writer.writerow(['书名', '作者', '售价'])
for book in books:
writer.writerow(book)
if __name__ == '__main__':
books = get_books()
save_to_csv(books)
```
程序的主要流程如下:
1. 发送 GET 请求,获取当当网电子书“今日特惠”页面的 HTML 内容。
2. 使用 BeautifulSoup 解析 HTML 内容,获取每本书的书名、作者和售价。
3. 使用正则表达式提取售价中的数字部分。
4. 将每本书的信息保存到列表中。
5. 将列表中的信息写入 CSV 文件,完成数据的持久化。
最后,你可以在当前目录下找到名为 `books.csv` 的文件,其中包含了所有“今日特惠”图书的信息。
阅读全文