适合python新手入门的简单#正则表达式#练手项目

主要运用到的python知识#网页请求#正则表达式#Json格式保存文件
直接上代码吧!

# -*- coding:utf-8 -*-
import requests
import re
import json
import time

def get_one_page(url):
    '''
    该函数接收一个 url 作为参数,返回指定 url 页面的源代码。
    :param url:页面的链接
    '''
    headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
    }
    response = requests.get(url,headers = headers,timeout = 5)
    # 判断响应体的状态码,若是200则表示响应成功,返回页面源代码,否则返回 None
    if response.status_code == 200:
        response.encoding = 'utf-8'
        return response.text
    return None

def parse_one_page(html):
    '''
    解析的内容有:商品信息,商品id,货源,商品路径
    '''
    # 使用 compile 方法将正则字符串编译成正则表达式对象,以便在后面的匹配中复用
    pattern = re.compile('<li data-sku="(.*?)" class="gl-item">.*?<div class="gl-i-wrap">.*?<div class="p-img">.*?<a target="_blank" title="(.*?)" href="(.*?)".*?<div class="p-stock">(.*?)</div>', re.S)
    items = re.findall(pattern, html)
    for item in items:
        yield {
            'name': item[1],
            'id': item[0],
            'goods':item[3],
            'url': item[2]
        }
                
def write_to_file(content):
    '''
    该函数用于将商品信息写入到文本文件
    '''
    with open('result.txt', 'a', encoding='utf-8') as f:
        # 通过 JSON 库的 dumps()方法实现字典的序列化,
        # 并指定 ensure_ascii 参数为 Fasle,这样可以保证输出的结果是中文形式而不是 Unicode 编码
        f.write(json.dumps(content, ensure_ascii=False) + '\n')


def main():
	#这里主要在京东首页搜索了关键次“n95口罩京东自营”,换做其它也是适用的,只要整体网页结构不变
    url = 'https://search.jd.com/Search?keyword=n95%E5%8F%A3%E7%BD%A9%E4%BA%AC%E4%B8%9C%E8%87%AA%E8%90%A5&enc=utf-8&wq=n95%E5%8F%A3%E7%BD%A9%E4%BA%AC%E4%B8%9C%E8%87%AA%E8%90%A5&pvid=1a75432e25154ae9a143116fc9a41254'
    html = get_one_page(url)
    for item in parse_one_page(html):
       print(item)
       write_to_file(item)

if __name__ == "__main__":
        main()

结果:
在这里插入图片描述

发布了33 篇原创文章 · 获赞 7 · 访问量 8329

猜你喜欢

转载自blog.csdn.net/muchong123/article/details/104327705
今日推荐