import requests from lxml import etree import pandas as pd username_list=[] film_critic_list=[] useful_num_list=[] useless_num_list=[] assess_list=[] ttt_all_urls = [] for i in range(191): ttt_page_urls = f'https://movie.douban.com/subject/26430107/reviews?sort=hotest&start={i * 20}' headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.41'} rq=requests.get(url=ttt_page_urls,headers=headers) dom1 = etree.HTML(rq.text) ttt_data = dom1.xpath('//*[@id="content"]/div/div[1]/div[1]/div/@data-cid') for i in ttt_data: a=dom1.xpath(f'//*[@id={i}]/div/h2/a/@href') ttt_all_urls.extend(a) for url1 in ttt_all_urls: for i in ttt_data: rq2 = requests.get(url=url1,headers=headers) dom2=etree.HTML(rq2.text) username= dom2.xpath(f'//*[@id={i}]/header/a[1]/span/text()') print(username) film_critic = dom2.xpath(f'//*[@id="link-report-{i}"]/div[1]/p/text()') useful_num = dom2.xpath(f'*[@id="review-{i}-content"]/div[3]/button[1]/text()') useless_num= dom2.xpath(f'*[@id="review-{i}-content"]/div[3]/button[2]/text()') assess = (dom2.xpath('//*[@id="content"]/div/div[1]/h1/span/text()')) username_list.extend(username) film_critic_list.extend(film_critic) useful_num_list.extend(useful_num) useless_num_list.extend(useless_num) assess_list.extend(assess) data={'username':username_list,'film_critic':film_critic_list,'useful_num':useful_num_list,'useless_num':useless_num_list,'assess':assess_list} df=pd.DataFrame(data) df.to_csv('fimldata.csv',encoding='utf-8',index=None)
时间: 2024-04-01 08:35:19 浏览: 125
这段代码的功能是爬取豆瓣电影《太空悍将》的影评信息,并将爬取到的数据保存到名为"fimldata.csv"的CSV文件中。具体来说,代码先构造了每一页的URL地址,然后通过requests库发送请求获取HTML页面。接着,使用lxml库中的etree模块对HTML页面进行解析,提取出每条影评的URL地址,并将这些地址保存到一个列表中。接下来,遍历所有影评的URL地址,再次使用requests和etree库对每个影评页面进行解析,提取出影评的作者、影评内容、有用数、无用数以及对应的电影名称。最后,将这些数据存储到一个字典中,并使用pandas库将字典转换为DataFrame格式后保存到CSV文件中。
相关问题
import requests from lxml import etree import csv import pandas 对酷狗新歌榜爬取
使用上述Python库进行酷狗新歌榜的爬取,你可以结合`requests`获取网页源代码,`lxml`解析HTML树结构,`csv`或`pandas`将数据存储或转换为CSV或Excel文件。以下是基本的步骤:
1. **导入库**:
```python
import requests
from lxml import etree
import csv
import pandas as pd # 如果你不习惯使用csv,也可以选择直接读写Excel,这里用pandas方便些
```
2. **发送请求并获取HTML**:
```python
url = 'http://music.kugou.com/new/songlist.htm'
headers = {'User-Agent': 'Mozilla/5.0'} # 设置合适的用户代理头,避免被识别为机器人
response = requests.get(url, headers=headers)
html = response.text
```
3. **解析HTML**:
```python
parser = etree.HTMLParser()
tree = etree.fromstring(html, parser)
# 找到包含歌曲信息的部分,这里同样假设歌曲信息在特定class的元素内
song_list = tree.xpath('//div[@class="song-item"]')
```
4. **提取数据**:
```python
songs = []
for song_item in song_list:
title = song_item.xpath('.//a[@class="title"]/text()')[0] # 提取歌曲名
artist = song_item.xpath('.//span[@class="artist"]/text()')[0] # 提取歌手名
# 将数据添加到列表中,如果需要更多字段,继续类似提取
songs.append([title, artist])
```
5. **保存数据**:
```python
# 用csv写入文件
with open('kugou_new_songs.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['歌曲名称', '歌手'])
writer.writerows(songs)
# 或者用pandas DataFrame存储
df = pd.DataFrame(songs, columns=['歌曲名称', '歌手'])
df.to_csv('kugou_new_songs.csv', index=False) # 转换为CSV
```
6. **注意事项**:
- 遵循网站的robots.txt规则,不要过于频繁地访问以免引起服务器压力。
- 如果遇到动态加载的内容(如AJAX),可能需要分析实际请求的API或者使用第三方库如Selenium。
import re import requests from lxml import etree import numpy as np import pandas as pd from lxml import etree import numpy as np import requests headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36' } url="https://www.5iai.com/#/jobList" response = requests.get(url,headers = headers) response.encoding = 'utf8' html = response.text root = etree.HTML(html) node_list = root.xpath("//div[@class='wrap']/text()") #/ul/li/div[@class='jobInfo']/span node_list #保存为txt np.savetxt('C:/Users/11148/Desktop/daijing_list.txt',node_list,fmt='%s')
这段代码是用Python爬取了一个网站(https://www.5iai.com/#/jobList)上的数据,并将获取的数据保存到了一个txt文件中。
具体的实现过程如下:
1. 引入需要的库:re、requests、lxml、numpy、pandas
2. 设置请求头,模拟浏览器访问网站,避免被反爬虫机制封禁
3. 发送get请求,获取网页的HTML源代码,并设置编码格式为utf-8
4. 使用lxml库解析HTML源代码,获取需要的节点信息,这里使用xpath语法进行节点的定位
5. 将获取的节点信息保存到一个txt文件中,使用numpy库的savetxt函数实现
需要注意的是,这段代码中的xpath定位语句可能会因为网页结构的变化而失效,需要根据实际情况进行调整。同时,爬取网站数据也需要遵守相关法律法规和网站的使用规定,不得进行非法爬取行为。
阅读全文