获取网页数据存储到CSV

# -*- encoding=UTF-8 -*-
'''
author:vfast
name:spider
data:2021/6/24
'''
import csv
import re

from lxml import etree
import requests

user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'
headers = {'User-Agent': user_agent}
r = requests.get('http://seputu.com/', headers=headers)


# 使用lxml解析网页
html = etree.HTML(r.text)
div_mulus = html.xpath('.//*[@class="mulu"]')
pattern = re.compile(r'\s*\[(.*)\]\s+(.*)')
rows = []


for div_mulu in div_mulus:
    #找到所有的div_h2标签
    div_h2 = div_mulu.xpath('./div[@class="mulu-title"]/center/h2/text()')

    if len(div_h2) > 0:
        h2_title = div_h2[0].encode('utf-8')
        a_s = div_mulu.xpath('./div[@class="box"]/ul/li/a')

        for a in a_s:

            href = a.xpath('./@href')[0].encode('utf-8')
            box_title = a.xpath('./@title')[0].encode('utf-8')

            match = pattern.search(box_title)
            if match != None:
                date = match.group(1).encode('utf-8')
                real_title = match.group(2)
                content = (h2_title, real_title, href, date)
                rows.append(content)

headers = ['title', 'real_title', 'href', 'date']
with open('qiye.csv', 'w') as f:
    f_csv = csv.writer(f)
    f_csv.writerow(headers)
    f_csv.writerows(rows)

来源:学习Python爬虫开发与项目实战记录

### 使用Python将爬取的数据保存到CSV文件 为了实现这一目标,可以按照如下方式操作: #### 导入库并初始化设置 首先需要导入`csv`模块以及用于网络请求的库如`requests`。这有助于处理HTTP请求和解析响应内容。 ```python import requests import csv from bs4 import BeautifulSoup # 如果网页结构复杂可能需要用到BeautifulSoup来解析HTML文档 ``` #### 发送请求获取数据 通过发送GET或POST请求访问目标网站,并接收返回的内容。这里假设已经知道URL地址和其他必要参数。 ```python url = 'http://example.com' # 替换成实际的目标网址 response = requests.get(url) html_content = response.text soup = BeautifulSoup(html_content, "html.parser") # 解析页面源码以便提取所需信息 ``` #### 提取有用的信息 根据具体需求定位要抓取的数据项。例如,在本例中是从表格里抽取特定列作为最终输出的一部分。 ```python table_rows = soup.find_all('tr') # 获取所有的行标签<tr> data_list = [] for row in table_rows: columns = row.find_all('td') column_data = [ele.text.strip() for ele in columns] data_list.append(column_data) # 过滤掉不需要的列(比如第2列) filtered_data = [[item[i] for i in range(len(item)) if i != 1] for item in data_list][^1] ``` #### 打开/创建CSV文件准备写入 指定路径及编码格式打开一个新文件或者覆盖现有同名文件;如果希望追加模式,则应使用'a+'代替'w'. ```python with open('./output.csv', mode='w', newline='', encoding='utf-8-sig') as file: writer = csv.writ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值