当前位置: 首页 > news >正文

石家庄做网站wsjz/7个湖北seo网站推广策略

石家庄做网站wsjz,7个湖北seo网站推广策略,做视频官方网站,网站注册账号怎么做接着上一回。 这段程序实现从淘宝主页开始,输入搜索信息(搜索‘手表’),确定搜索后,爬取结果前20页所有的价格信息和地区信息(其他信息也可以获取,暂时只获取了这两个),最…

接着上一回。

这段程序实现从淘宝主页开始,输入搜索信息(搜索‘手表’),确定搜索后,爬取结果前20页所有的价格信息和地区信息(其他信息也可以获取,暂时只获取了这两个),最后用matplotlib绘制了手表价格与数量的频率图。


可以看出来,普通手表价格集中在50-400元左右。


下面介绍程序思路:

思路还是利用selenium模块打开网页,返回页面源码,然后利用bs4解析源码,获取信息。

这次尝试在selenium库上载了大跟头,主要遇到了以下几个问题

1.跳转页面次数不对

        一开始利用selenium定位淘宝“下一页”按钮,获取这这一页信息后直接跳转下一页。结果发现,翻页的次数总是少于预期的次数。后来经过多次尝试,发现问题应该是跳转页面后元素没有加载完成,以致无法翻页。虽然设置了显示等待,但还是没有奏效,后来设置了3s的强制等待后,翻页次数终于达到了预期。

2.跳转页面后源码未变

        好不容易解决了跳转次数不对的问题,后来发现不管翻了多少页,打印出来的信息都是相同的,都是第一页信息。也就是说,浏览器虽然翻页过去了,程序获得的源码却未变。也是搜索了很多信息但是一直未解决。有说是因为句柄未改(但是我根本不知道句柄是啥),而且按照所写的方法去试了试,还是没有改变。后来检索到可能还是页面还未加载完成,于是,我又强制等待了3s,终于ok。


代码:

import time
import re
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plturl = 'https://www.taobao.com'         # 淘宝首页
max_page_account = 20                  # 最大页面数
search_contents = '手表'               # 搜索内容# 打开页面
browser = webdriver.Chrome()
browser.get(url)
wait = WebDriverWait(browser, 10)
# 价格列表 和 地区列表
price_list = []
location_list = []def init():# 等待搜索框 与 搜索按钮 加载完成input_contents = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#q')))bnt_search = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#J_TSearchForm > div.search-button > button')))# 输入 搜索内容,点击 搜索按钮input_contents.send_keys(search_contents)bnt_search.click()def next_page():"""翻页"""# 定位 “下一页” 按钮bnt_next_page = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > ul > li.item.next > a')))bnt_next_page.click()time.sleep(5)   # 强制等待5s,否则页面的源码不会改变def get_info():"""获取信息"""# 等待 商品列表 加载完成wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-itemlist > div > div')))page = browser.page_source                             # 获取源码soup = BeautifulSoup(page, 'html.parser')              # 用beautifulsoup解析源码items = soup.find('div', class_='grid g-clearfix')     # 获取商品列表信息itemlist = items.find_all('div', class_=re.compile(r'^item J_MouserOnverReq'))for item in itemlist:price = item.find('div', class_='price g_price g_price-highlight').find('strong').get_text()location = item.find('div', class_='location').get_text()price_list.append(float(price))location_list.append(location)def plot_image(item_list, x_label, y_label):"""调用获取信息函数并绘图"""count = 0while count < max_page_account:     # 遍历要求的页数count += 1get_info()time.sleep(5)                   # 等待5s后再翻页if count != max_page_account:next_page()# 绘制频率图plt.hist(item_list, 50, rwidth=0.8)    # 这一段注释在博客里单独解释tick = np.linspace(0, 5000, 20)        plt.xticks(tick)plt.tick_params(labelsize=6)plt.xlabel(x_label)plt.ylabel(y_label)plt.title(x_label + "-" + y_label)plt.show()init()
x_label = "price"
y_label = "amount"
plot_image(price_list, x_label, y_label)

主要解释一下绘图部分代码。

在 “#绘制频率图”下:

第一行是hist图,第一个参数是x轴数据列表,这里即使价格列表;第二个参数是分隔数量,比如手表价格是200-2000,如果分隔数量是10,那么每隔区间就是(2000-200)/10,通俗来说就是柱状图的数量。第三个参数是柱状图的宽度

第2~4行是设置x轴刻度,如果不设置也行,hist图会默认,但是我觉得刻度不够精确,重新设置一下。第2行是定义刻度对象,第一个参数是刻度最小值,第二个参数是最大值,第三个参数是间隔数量。第4行是设置x轴刻度字体大小

5~7行是设置x,y轴标签以及图题,貌似matplotlib不支持中文,还未解决。

最后显示图,未保存。


下一次应该会学习一下如何从网页上下载图片。

http://www.lbrq.cn/news/1108153.html

相关文章:

  • 学做网站看那个网/搜索关键词的工具
  • 娄底网站建设建站/百度seo排名优化价格
  • 网站建设的目标人群是什么/商丘关键词优化推广
  • 外国人学做中国菜的网站/搜全网的浏览器
  • 百度搜索排名查询/seo网站优化推广
  • 北京建网站软件/网站点击量查询
  • 吉林省建设招标网站/深圳市网络seo推广平台
  • 企业做营销型网站/山东百度推广代理商
  • 做一个购物网站价格/东营优化公司
  • 网站连接怎么做/企业网站建设门户
  • 最便宜的购物app/枫林seo工具
  • 沈阳唐朝网站建设/网络营销公司排行榜
  • 老外做汉字网站/品牌互动营销案例
  • 揭阳seo快速排名/新网站 seo
  • dz插件网站和自己做的网站区别/网站制作多少钱
  • 网站建设开发方式/广告文案
  • 服装网站建设目的作用是什么/代写文章多少钱
  • 网站程序是什么意思/自媒体是什么
  • 沈阳优化网站关键词/竞价托管外包代运营
  • 人事代理网站建设/百度企业推广怎么收费
  • 手绘教学网站/windows优化大师会员兑换码
  • 男女做那个的网站/3分钟搞定网站seo优化外链建设
  • 有个专门做gif的网站/网络营销职业规划300字
  • 一个网站一年多少钱/广告传媒公司经营范围
  • 福州免费做网站/百度指数搜索热度大学
  • 政府网站建设管理情况总结/服务营销策划方案
  • 沈阳网站seo优化哪家好/百度竞价广告
  • 政府门户网站建设内容/免费的api接口网站
  • 以做网站为毕设/惠州seo管理
  • 华丽的网站模板/深圳优化seo
  • Node.js:EventEmitter、Buffer
  • Spring Boot 与微服务详细总结
  • Spring AI 项目实战(十九):Spring Boot + AI + Vue3 + OSS + DashScope 构建多模态视觉理解平台(附完整源码)
  • mac 配置svn
  • RustDesk 自建中继服务器教程(Mac mini)
  • Selenium 启动的浏览器自动退出问题分析