请编写一个python脚本,抓取网页图片并保存
时间: 2023-04-08 21:03:25 浏览: 126
以下是一个简单的 Python 脚本,可以抓取网页图片并保存到本地:
```python
import requests
import os
url = 'https://www.example.com/image.jpg' # 图片的 URL
filename = 'image.jpg' # 保存的文件名
response = requests.get(url)
if response.status_code == 200:
with open(filename, 'wb') as f:
f.write(response.content)
print('图片已保存到', os.getcwd())
else:
print('无法下载图片')
```
你可以将 `url` 和 `filename` 替换为你需要下载的图片的 URL 和保存的文件名。如果下载成功,脚本会在当前目录下保存图片,并输出保存的路径。
相关问题
python爬虫抓取京东手机网页数据并保存到csv中
在Python中,抓取京东手机网页数据并保存到CSV文件通常涉及以下几个步骤:
1. **安装库**:
首先需要安装 `requests` 库用于发送HTTP请求获取网页内容,以及 `BeautifulSoup` 或者 `lxml` 进行HTML解析,`pandas` 库用于处理数据并导出到CSV。
```shell
pip install requests beautifulsoup4 pandas
```
2. **编写爬虫脚本**:
使用 `requests.get()` 获取指定URL的内容,然后通过BeautifulSoup解析HTML结构找到所需的数据。这里假设我们要抓取的是商品列表页信息。
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 指定京东手机页面URL
url = 'https://list.jd.com/list.html?cat=10086&sort=R'
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'}
def parse_html(html):
soup = BeautifulSoup(html, 'lxml')
# 根据实际页面结构提取数据(例如商品名称、价格等)
data_list = []
for item in soup.find_all('div', class_='gl-item'):
name = item.find('a').text.strip()
price = item.find('.price').text.split()[0] # 提取价格部分
data_list.append({'名称': name, '价格': price})
return data_list
response = requests.get(url, headers=headers)
if response.status_code == 200:
html_content = response.text
parsed_data = parse_html(html_content)
else:
print(f"请求失败,状态码:{response.status_code}")
# 将数据存储到DataFrame中
df = pd.DataFrame(parsed_data)
# 导出到CSV文件
df.to_csv('jd_phone_data.csv', index=False)
```
3. **注意事项**:
- 网站可能会有反爬虫策略,比如设置验证码、动态加载等,你需要根据实际情况调整请求头、解析规则或者使用更高级的技术(如Selenium结合浏览器)。
- 如果网站结构经常变动,上述解析规则可能不再有效,需定期检查并更新。
编写一个可以抓取淘宝商家好评率排名的python脚本
由于淘宝商家好评率排名是需要登录后才能查看的,因此需要先进行登录操作。这里使用Selenium和Chrome浏览器来模拟登录和抓取数据。
```python
from selenium import webdriver
import time
# 设置Chrome浏览器
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')
options.add_argument('--headless') # 无头模式,不弹出浏览器窗口
browser = webdriver.Chrome(options=options)
# 登录淘宝
def login(username, password):
browser.get('https://login.taobao.com/member/login.jhtml')
browser.find_element_by_id('fm-login-id').send_keys(username)
browser.find_element_by_id('fm-login-password').send_keys(password)
browser.find_element_by_class_name('fm-button').click()
time.sleep(5) # 等待页面加载完毕
# 抓取好评率排名
def get_rank():
browser.get('https://s.taobao.com/search?q=%E6%89%8B%E6%9C%BA&sort=sale-desc')
browser.find_element_by_class_name('filter-value').click()
browser.find_elements_by_class_name('option-list')[2].find_elements_by_tag_name('li')[1].click()
time.sleep(5) # 等待页面加载完毕
ranks = []
items = browser.find_elements_by_class_name('item')
for i in range(len(items)):
rank = items[i].find_element_by_class_name('deal-cnt').text
if rank.endswith('万+'):
rank = int(float(rank[:-2]) * 10000)
else:
rank = int(rank)
ranks.append((i+1, rank))
return ranks
# 执行脚本
if __name__ == '__main__':
username = input('请输入淘宝账号:')
password = input('请输入淘宝密码:')
login(username, password)
ranks = get_rank()
print('淘宝手机店好评率排名:')
for rank in ranks:
print('第%d名:%d' % (rank[0], rank[1]))
browser.quit()
```
执行脚本后,会先提示输入淘宝账号和密码进行登录,然后抓取淘宝手机店的好评率排名并输出。
阅读全文