运行平台:windows

Python版本:Python 3.7.0

用到的第三方库:requests ,Beautiful Soup,re

IDE:jupyter notebook

浏览器:Chrome浏览器

思路:

1.查看网页源代码

2.抓取单页内容

3.Beautiful Soup解析网页内容并提取有用信息

4.把全站有用信息写入文件

1.查看网页原代码

按F12查看网页源代码发现每一个商品的信息都在“

”标签之中。

点开之后信息如下

二.抓取单页内容并写入记事本

接下来通过以下代码获取网页内所需数据并写入记事本

1 #!usr/bin/env python3

2 #-*- coding:utf-8 -*-

3 from bs4 import BeautifulSoup #网页解析库

4 import requests #网页请求库

5 import re #正则表达式

6 headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}#添加请求头防止反爬

7 response = requests.get('http://www.maxiconsumo.com/sucursal_capital/comestibles/aceites/aceite-girasol.html',headers = headers) #使用网页请求库打开网页

8 soup = BeautifulSoup(response.text,"lxml") #使用BeautifulSoup解析网页

9 lis = soup.find('ul',class_='products-grid unstyled thubmnails products').find_all('li') #在解析的网页检测class元素为products-grid...下的li标签

10 msg = '{}\n商品名称:{}\n含税价格:{}\n免税价格:{}\n' #创建写入记事本内容

11 goods_list = [] #创建空列表

12 for li in lis: #遍历所有li标签内的内容

13 codigo = li.find('span',class_='sku').text.strip() #在遍历的内容内查找span标签下的sku的codigo进行去除头尾空格得到codigo

14 title = li.find('h2',class_='product-name').text.strip()#在遍历的内容内查找h2标签下的roduct-name进行去除头尾空格得到商品名称

15 price_so = li.find_all('span',class_='price')[:2] #在遍历的内容内查找span标签下的price进行切片保留头两个价格

16 price1,price2 = [p.text.strip() for p in price_so] #通过for循环和去出头尾空格分别获得免税价格和含税价格

17 info = msg.format(codigo,title,price1,price2) #内容添加进记事本内

18 goods_list.append(info) #信息加入空列表内

19 print(codigo,title,price1,price2) #输出到控制台

20 with open('maxiconsumo.txt','a',encoding = 'utf-8') as file: #创建一个叫maxiconsumo.txt的文件

21 file.write('\n',join(goods_list)) #把列表内容写入文件

现在单页内容已经获取完毕

三.抓取全站价格

通过对网页的分析可以发现官网对所有的商品进行分类并且可以通过首页进入任何商品网页

那么我只要抓取首页内商品分类的超链接就可以进入所有网页并收集信息代码如下

1 from bs4 import BeautifulSoup #网页解析库

2 import requests #网页请求库

3 importre4 res = requests.get('http://www.maxiconsumo.com',headers = headers) #打开首页

5 sou = BeautifulSoup(res.text,"lxml")#解析网页

6 pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') #创建收集链接的正则

7 index_lis = str(sou.find_all(class_="subcat")) #查找解析网页内subcat保存超链接的元素

8 product_url = re.findall(pattern,index_lis) #使用正则匹配获取subcat内超链接清洗获得超链接

9 for url in product_url: #for循环出来超链接

10 print(url) #控制台输出

通过代码输出得到以下内容

有了所有内容的网页链接后就可以开始封装了源代码如下

1 #!usr/bin/env python3

2 #-*- coding:utf-8 -*-

3 from bs4 import BeautifulSoup #网页解析库

4 import requests #网页请求库

5 import re #正则表达式

6 defget_one_page(url,headers):7 response = requests.get(url,headers = headers) #使用网页请求库打开网页

8 soup = BeautifulSoup(response.text,"lxml") #使用BeautifulSoup解析网页

9 try:10 lis = soup.find('ul',class_='products-grid unstyled thubmnails products').find_all('li') #在解析的网页检测class元素为products-grid...下的li标签

11 msg = '{}\n商品名称:{}\n含税价格:{}\n免税价格:{}\n' #创建写入记事本内容

12 goods_list = [] #创建空列表

13 for li in lis: #遍历所有li标签内的内容

14 codigo = li.find('span',class_='sku').text.strip() #在遍历的内容内查找span标签下的sku的codigo进行去除头尾空格得到codigo

15 title = li.find('h2',class_='product-name').text.strip()#在遍历的内容内查找h2标签下的roduct-name进行去除头尾空格得到商品名称

16 price_so = li.find_all('span',class_='price')[:2] #在遍历的内容内查找span标签下的price进行切片保留头两个价格

17 price1,price2 = [p.text.strip() for p in price_so] #通过for循环和去出头尾空格分别获得免税价格和含税价格

18 info = msg.format(codigo,title,price1,price2) #内容添加进记事本内

19 goods_list.append(info) #信息加入空列表内

20 print(codigo,title,price1,price2) #输出控制台

21 with open('maxiconsumo.txt','a',encoding = 'utf-8') as file: #创建一个叫maxiconsumo.txt的文件

22 file.write('\n',join(goods_list)) #把列表内容写入文件

23 except:24 pass

25

26 defget_one_page_url(index,headers):27 res = requests.get(index,headers = headers) #打开首页

28 sou = BeautifulSoup(res.text,"lxml")#解析网页

29 pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') #创建收集链接的正则

30 index_lis = str(sou.find_all(class_="subcat")) #查找解析网页内subcat保存超链接的元素

31 product_url = re.findall(pattern,index_lis) #使用正则匹配获取subcat内超链接清洗获得超链接

32 return product_url #返回链接

33

34 defmain():35 headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}#添加请求头防止反爬

36 index = 'http://www.maxiconsumo.com' #定义首页链接

37 page_url = get_one_page_url(index,headers) #传入参数

38 for i in page_url: #for 循环链接

39 url =i40 get_one_page(url,headers) #得到的链接传入需要爬的函数内

41

42 if __name__ == '__main__':43 main()

虽然代码不太严谨 但是基本功能都实现了

这里我就不把多进程的方式写出来 按目前代码大概爬取全网的数据也就十几分钟

不放多进程的原因就是不想给对方服务器造成过大的压力 ps:多进程任务相当于cc攻击

最后附上爬到大概内容图片

python爬虫外贸客户_python实战成功爬取海外批发商价格信息并写入记事本相关推荐

  1. 【python爬虫 系列】13.实战二 爬取京东信息

    实战2 爬取京东 1. 2.设计架构: 每个商品只有100页, 用线程池处理,不需要分区 对于耗费时间的评论获取使用Celery分布式获取 Celery使用redis中间件和存储 结果写入cs 3.写 ...

  2. python爬虫外贸客户_python 爬虫抓取亚马逊数据

    1 #生成随机头 2 defrandHeader():3 head_connection = ['Keep-Alive', 'close']4 head_accept = ['text/html, a ...

  3. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

    原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...

  4. Python爬虫小白教程(二)—— 爬取豆瓣评分TOP250电影

    文章目录 前言 安装bs4库 网站分析 获取页面 爬取页面 页面分析 其他页面 爬虫系列 前言 经过上篇博客Python爬虫小白教程(一)-- 静态网页抓取后我们已经知道如何抓取一个静态的页面了,现在 ...

  5. Python爬虫系列(二):爬取中国大学排名丁香园-用户名和回复内容淘宝品比价

    Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品比价 目录 Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品 ...

  6. 基于python爬虫————静态页面和动态页面爬取

    基于python爬虫----静态页面和动态页面爬取 文章目录 基于python爬虫----静态页面和动态页面爬取 1. 爬虫的原理 2. 用正则表达式匹配获取数据 3. 页面源码解析 4. 通过req ...

  7. Python爬虫《自动化学报》数据爬取与数据分析

    Python爬虫<自动化学报>数据爬取与数据分析 文章目录 Python爬虫<自动化学报>数据爬取与数据分析 前言 一.代码 二.结果展示 三.爬虫实现 1.准备 2.获取网页 ...

  8. Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息

    Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息 基础: Python 爬虫 之 Selenium.webdriver 的安装,以及模拟打开操作 ...

  9. Python爬虫学习基础——5分钟学会爬取B站视频日播放量排行

    Python爬虫学习基础--5分钟学会爬取B站视频日播放量排行 基础包含 requests pyquery 进入正题 基础包含 这也是我当初第一次学习爬虫时做的练习,感觉给初学者练笔挺不错的.运用的知 ...

最新文章

  1. win10下安装TensorFlow(CPU only)
  2. cocos2d-x-3.1 win32程序-初识源代码(coco2d-x 学习笔记二)
  3. Maple Warrior 个人简历
  4. oracle 删除补全日志组_【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)...
  5. C++ 面向对象(二)多态 : 虚函数、多态原理、抽象类、虚函数表、继承与虚函数表
  6. Java中ArrayList的使用
  7. 在2008 server安装vm server时发生的错误error1718、error1335……
  8. 前端学习入门,如何系统的学习前端?
  9. Ubuntu14.04快速搭建SVN服务器及日常使用
  10. express框架开发笔记
  11. 捕获键盘和鼠标的消息机制
  12. 小米5主板原理图_小米5手机拆解及评测 小米5拆机详细图解教程
  13. 100位量子计算机算力,最快!我国量子计算机实现算力全球领先
  14. 浅谈大数据的过去、现在和未来
  15. 《tkinter实用教程二》tkinter的子模块ttk
  16. 棋盘算法c语言程序,骑士走棋盘算法
  17. Python 四舍六入五成双
  18. cairo之安装配置
  19. getMonth()函数的问题
  20. 计算机用户使用品牌调查报告,品牌电脑市场调查报告

热门文章

  1. EmacsLisp学习
  2. InputService
  3. Abseil之Copies, Abbrv
  4. oracle dataguard详解,Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向
  5. 笔记本电脑开机后在桌面上没有计算机图标,电脑开机之后桌面上没有图标怎么处理...
  6. linux系统运行application,[分享]分享曾经做过的一个嵌入式系统application框架 | 勤奋的小青蛙...
  7. java负零_java数据结构从零基础到负基础
  8. 2020年最好用的手机是哪一款_2020年旗舰手机盘点,这七款优点明显,你最喜欢哪一款?...
  9. Matlab重建信号实验总结,实验三信号采样与重建(实验报告).doc
  10. python画一个祝福别人生日快乐_还在送生日贺卡?试试为家人朋友创作一个生日动画短视频吧...