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

长沙的企业网站建设seo关键字优化技巧

长沙的企业网站建设,seo关键字优化技巧,学做网站在什么地方学,网站建设具体工作注:在使用爬虫抓取网站数据之前,非常重要的一点是确保遵守相关的法律、法规以及目标网站的使用条款。 (最底下附下载链接) 准备工作: 安装依赖: 确保已经安装了Python环境。 使用pip安装scrapy&#xff…

注:在使用爬虫抓取网站数据之前,非常重要的一点是确保遵守相关的法律、法规以及目标网站的使用条款。

(最底下附下载链接)

准备工作:

安装依赖:

确保已经安装了Python环境。

使用pip安装scrapy:pip install scrapy。

创建Scrapy项目:

打开命令行工具,在期望的位置创建一个新的Scrapy项目:scrapy startproject weiboHotSearch。

进入项目目录:cd weiboHotSearch。

设置User-Agent和其他headers:

修改settings.py文件中的USER_AGENT以及其他可能需要自定义的headers,模拟真实浏览器访问。

编写爬虫

1.创建Spider

图片

2. 定义Item

在items.py文件中定义你想要抓取的数据字段。对于微博热搜榜单,我们可能需要如下字段:


import scrapyclass WeiboHotsearchItem(scrapy.Item):rank = scrapy.Field()        # 排名keyword = scrapy.Field()     # 热搜关键词url = scrapy.Field()         # 关键词链接hot_index = scrapy.Field()   # 热度指数category = scrapy.Field()    # 类别(如置顶、实时上升等)

3. 编写Spider

使用genspider命令生成一个爬虫模板并编辑它:

1. 导入必要的库

import scrapy
from ..items import WeiboHotsearchItem
from urllib.parse import urljoin
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

2. 爬虫类定义


class HotSearchSpider(scrapy.Spider):name = 'hot_search'allowed_domains = ['s.weibo.com']start_urls = ['https://s.weibo.com/top/summary']

3. 初始化方法


def __init__(self, *args, **kwargs):super(HotSearchSpider, self).__init__(*args, **kwargs)chrome_options = Options()chrome_options.add_argument("--headless")  # 无头模式运行chrome_options.add_argument("--disable-gpu")chrome_options.add_argument("--no-sandbox")self.driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=chrome_options)

目的:初始化爬虫实例时,配置并启动一个无界面(headless)模式的Chrome浏览器实例,以避免在执行过程中弹出浏览器窗口。

4. 解析方法


def parse(self, response):self.driver.get(response.url)# 显式等待,直到所有的tr元素都出现wait = WebDriverWait(self.driver, 20)wait.until(EC.presence_of_all_elements_located((By.XPATH, '//table/tbody/tr')))# 滚动页面到底部以触发更多内容加载last_height = self.driver.execute_script("return document.body.scrollHeight")while True:self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(2)  # 等待新内容加载new_height = self.driver.execute_script("return document.body.scrollHeight")if new_height == last_height:breaklast_height = new_heightfor sel in self.driver.find_elements(By.XPATH, '//table/tbody/tr'):item = WeiboHotsearchItem()item['rank'] = sel.find_element(By.XPATH, './/td[@class="td-01"]').text if sel.find_elements(By.XPATH,'.//td[@class="td-01"]') else Noneitem['keyword'] = sel.find_element(By.XPATH, './/td[@class="td-02"]/a').text if sel.find_elements(By.XPATH,'.//td[@class="td-02"]/a') else Nonehref = sel.find_element(By.XPATH, './/td[@class="td-02"]/a').get_attribute('href') if sel.find_elements(By.XPATH, './/td[@class="td-02"]/a') else Noneitem['url'] = urljoin('https://s.weibo.com', href) if href else Noneitem['hot_index'] = sel.find_element(By.XPATH, './/td[@class="td-02"]/span').text if sel.find_elements(By.XPATH, './/td[@class="td-02"]/span') else Noneitem['category'] = sel.find_element(By.XPATH, './/td[@class="td-03"]/i').text if sel.find_elements(By.XPATH,'.//td[@class="td-03"]/i') else Noneyield item

目的:

使用Selenium加载网页并等待所有目标元素加载完成。

实现页面滚动以加载动态内容,确保获取完整数据。

遍历每个搜索结果项,提取排名、关键词、链接、热度指数和类别等信息,封装到WeiboHotsearchItem对象中,并将其生成为输出。

5. 关闭方法

def closed(self, reason):self.driver.quit()

目的:当爬虫关闭时,确保释放由Selenium创建的浏览器资源,即关闭浏览器实例。

4.配置Pipeline以保存至MongoDB


import pymongoclass MongoDBPipeline:collection_name = 'weibo_hotsearch'def __init__(self, mongo_uri, mongo_db):self.mongo_uri = mongo_uriself.mongo_db = mongo_db@classmethoddef from_crawler(cls, crawler):return cls(mongo_uri=crawler.settings.get('MONGO_URI'),mongo_db=crawler.settings.get('MONGO_DATABASE', 'items'))def open_spider(self, spider):self.client = pymongo.MongoClient(self.mongo_uri)self.db = self.client[self.mongo_db]def close_spider(self, spider):self.client.close()def process_item(self, item, spider):self.db[self.collection_name].insert_one(dict(item))return item

5. 更新Settings

# 启用pipelines
ITEM_PIPELINES = {'weibo_hotsearch.pipelines.MongoDBPipeline': 300,
}# MongoDB连接设置
MONGO_URI = 'mongodb://localhost:27017/'
MONGO_DATABASE = 'weibo'# 其他可选设置
ROBOTSTXT_OBEY = False  # 如果网站有robots.txt且不允许爬取,请谨慎设置为True
DOWNLOAD_DELAY = 1      # 设置下载延迟避免触发反爬虫机制# 禁用默认的下载器中间件
DOWNLOADER_MIDDLEWARES = {'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
}

6.查看Mongodb保存结果

 mongodb-windows-x86下载

源码下载

http://www.hotlads.com/news/5075.html

相关文章:

  • 建设网站要求哪里备案属于免费的网络营销方式
  • 杭州软件测试培训机构排名seo优化方案策划书
  • 部门网站管理建设工作汇报专业的网站优化公司
  • 如何做电影网站 去哪里找片源网络安全有名的培训学校
  • ai做图标教程网站seo是什么姓
  • 台州网站怎么推广广州seo网站管理
  • 福建省建设厅网站 保证金打开百度搜索引擎
  • 长沙市天心建设局网站cpa广告联盟平台
  • 设计师可以做兼职的网站有哪些东莞百度推广排名优化
  • 做网站为什么要用固定ip本网站三天换一次域名
  • 南京做网站开发 待遇站长之家域名信息查询
  • 建一个自己用的网站要多少钱seo怎么收费seo
  • 企业做不做网站的坏处富阳网站seo价格
  • 做外贸建网站需要推广吗seo培训师
  • 网站首页优化的目的google搜索优化方法
  • 大连坐网站盐城seo优化
  • 小型网站建设西安百度关键词优化
  • 静安企业网站建设爱站工具网
  • 全球最大的电商平台电商运营seo
  • 橙色企业网站模板100个裂变营销案例
  • 广东企业建网站网站快速排名优化
  • 怎么看网站是不是做竞价seo站长工具查询
  • 南宁市建设工程信息网长沙seo免费诊断
  • 做网站需要备案几次长尾关键词排名工具
  • ssc网站建设交流群网络营销的功能有哪些?
  • 网站建设管理及维护长春网站搭建
  • 免费个人网站模板下载网站制作的流程
  • 民宿客栈网站制作竞价专员是做什么的
  • 将网站加入小程序西安网站seo诊断
  • 免费logo设计自动生成器淘宝seo是什么意思啊