首页 - 信息 - 02 python爬虫

02 python爬虫

2023-10-07 02:19

内容
  • 步骤
  • 代码
  • 结果
    • new.csv
    • 图片

步骤

  1. 抓取首页文章详情的url和图片地址
  2. 下载图片并要求在文章详情中添加页面内容
  3. 爬取文章详情中的标题、作者、发表时间

代码

导入请求
导入 csv
从 bs4 导入 BeautifulSoup

#请求的一级页面的地址
q_url = 'http://www.gsm-guard.net/newsCenter.html?current=1'

def get_page():
    标题= {
        'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, 如 Gecko) Chrome/83.0.4103.116 Safari/537.36 UOS'
    }
    r = requests.get(q_url, headers=headers)
    r.encoding = 'utf-8'
    res = r.text

    返回资源


def parser_text(内容):
    # 将页面源码交给BeautifulSoup处理并生成bs对象
    # 从bs对象中查找数据
    # 查找(标签,属性=值)
    # find_all(标签, 属性=值)
    # 返回
    汤 = BeautifulSoup(内容, 'html.parser')
    # 查找属性id=nowplaying的div下class=list-item的所有li。查找一个find_all并查找全部。
    # li_list = soup.find_all('ul', class_='list_con fl')
    # attrs 和 class_ 含义相同,此时可以避免使用 class 关键字li_list = soup.find_all('ul', attrs={'class': 'list_con fl'})
    数据列表 = 列表()
    对于 li_list 中的 li:
        数据KV = {}
        src = li.find('a') # 查找li标签下的a标签
        # http://www.gsm-guard.net + /news-118.html
        dataKV['src'] = q_url.split('/newsCenter')[0] + src.get('href') # 获取href的值

        # http://www.gsm-guard.net/IMAGE/bf1d68af-8966-4e1e-bcac-3a34233a6970.jpg
        img = li.find('img') # 查找li标签下的img标签
        dataKV['img'] = img.get('src') # 获取src的值

        # 下载图片
        save_data_b(dataKV['img'])

        # 请求详情页面
        # http://www.gsm-guard.net/news-137.html
        r = requests.get(dataKV['src'])
        r.encoding = 'utf-8'
        Second_res = r.text
        Second_soup = BeautifulSoup(second_res, 'html.parser')
        title = secondary_soup.find('span', attrs={'class': 'right'}).text
        dataKV['标题'] = 标题spans = secondary_soup.find('div', attrs={'class': 'ssss'}).find_all('span')
        dataKV['作者'] = spans[0].text
        dataKV['时间'] = spans[1].text

        data_list.append(dataKV)
        # 打印(“======”* 10)
    返回数据列表


# 另存为 CSV
def save_data_csv(data_list):
    headers = data_list[0].keys() # 获取标题

    打开('new.csv','w',newline ='',encoding ='utf-8')作为f:
        f_csv = csv.DictWriter(f, 标题)
        f_csv.writeheader()
        f_csv.writerows(data_list)


# 下载图片、mp4、zip都可以这样下载
def save_data_b(url):
    r = requests.get(url)
    img_name = url.split("/")[-1] # p2892635176.jpg
    with open('img/' + img_name, mode='wb') as f:
        f.write(r.内容)


如果 __name__ == '__main__':
# 脚步
    # 1. 爬取首页文章详情的url和图片地址
    # 2.下载图片并请求在文章详情中添加页面内容
    # 3.爬取文章详情中的标题、作者、发表时间

    # 获取页面源代码
    文本 = get_page()
    # 解析源码并获取所需信息
    data_list = parser_text(文本)
    # 保存为csv数据保存数据_csv(数据列表)

结果

new.csv

src,img,标题,作者,时间
http://www.gsm-guard.net/news-137.html,http://www.gsm-guard.net/IMAGE/bf1d68af-8966-4e1e-bcac-3a34233a6970.jpg,​[重要通知】新发地保障车辆司乘人员举报平台 管理员 2022-10-13 17:49:47
http://www.gsm-guard.net/news-126.html,http://www.gsm-guard.net/IMAGE/2523ea4a-dc2c-461e-b709-270a56241859.jpg,【盛大招商】新发地全国名特优农产品销售中心新招商,admin,2022-07-18 18:13:42

图片