首页 > 其他分享 >zf_利用feapder中的selenium网页爬取数据

zf_利用feapder中的selenium网页爬取数据

时间:2024-06-03 21:56:27浏览次数:13  
标签:url tr zf selenium li 爬取 item div browser

"http://www.ccgp.gov.cn/cggg/dfgg/"
#个人学习用切勿其他用途


# 标题 name
# 发布时间 publish_time
# 地域 location
# 采购人 purchaser
# 采购网址 url





#前提配置数据库安装feapder库


import random
import re
import time

import feapder
from feapder.utils.webdriver import WebDriver
from parsel import Selector
from feapder.db.mysqldb import MysqlDB
from selenium.webdriver.common.by import By



class TestRender(feapder.AirSpider):
db = MysqlDB()

__custom_setting__ = dict(
WEBDRIVER=dict(
pool_size=1, # 浏览器的数量
load_images=True, # 是否加载图片
user_agent=None, # 字符串 或 无参函数,返回值为user_agent
proxy=None, # xxx.xxx.xxx.xxx:xxxx 或 无参函数,返回值为代理地址
headless=False, # 是否为无头浏览器
driver_type="CHROME", # CHROME、EDGE、PHANTOMJS、FIREFOX
timeout=30, # 请求超时时间
window_size=(1024, 800), # 窗口大小
executable_path=None, # 浏览器路径,默认为默认路径
render_time=0, # 渲染时长,即打开网页等待指定时间后再获取源码
custom_argument=["--ignore-certificate-errors"], # 自定义浏览器渲染参数
# xhr_url_regexes=[
# "/ad",
# ], # 拦截 http://www.spidertools.cn/spidertools/ad 接口
)
)

def start_requests(self):
for i in range(5):
if i == 0:
url = 'https://www.ccgp.gov.cn/cggg/dfgg/index.htm'
else:
url = f'https://www.ccgp.gov.cn/cggg/dfgg/index_{i}.htm'
yield feapder.Request(url, render=True,xxx='https://www.ccgp.gov.cn/cggg/dfgg/')


def parse(self, request, response):
browser: WebDriver = response.browser
time.sleep(random.randint(3, 5))
li = Selector(browser.page_source).xpath('//ul[@class="c_list_bid"]/li/a/@href').extract()
for url in li:
url1 = request.xxx + url.replace('./','')
print(url1)
        #browser = browser 将浏览器句柄需要传递到下一页
            yield feapder.Request(url=url1, render=True,callback=self.parse_1,browser = browser)


def parse_1(self, request, response):
time.sleep(random.randint(1, 2))
    #获取浏览器句柄
browser = request.browser


# 标题 title
# 发布时间 publish_time
# 地域 location
# 采购人 purchaser
# 采购网址 url
# 采购正文 text
li = Selector(browser.page_source).xpath('//div[@class="table"]/table/tbody')
item = {}

'//*[@id="detail"]/div[2]/div/div[2]/div/div[2]/table/tbody/tr[2]'
item["title"] = li.xpath('./tr[2]/td[@colspan="3"]/text()').get('').strip()
'//*[@id="detail"]/div[2]/div/div[2]/div/div[2]/table/tbody/tr[5]/td[4]'
item["publish_time"] = li.xpath('./tr[5]/td[4]/text()').get('').strip()

'//*[@id="detail"]/div[2]/div/div[2]/div/div[2]/table/tbody/tr[11]'
item["location"] = li.xpath('./tr[11]/td[2]/text()').get('').strip()

'//*[@id="detail"]/div[2]/div/div[2]/div/div[2]/table/tbody/tr[4]/td[2]'
item["purchaser"] = li.xpath('./tr[4]/td[2]/text()').get('').strip()
item["url"] = request.url
# item["text"] = li.xpath('./tr[2]/td[@colspan="3"]/text()').get('').strip()


print(item)
# 写入数据库
self.db.add_smart("zf_table", item)



if __name__ == "__main__":
TestRender().start()

标签:url,tr,zf,selenium,li,爬取,item,div,browser
From: https://www.cnblogs.com/Lhptest/p/18229742

相关文章

  • Selenium运行后没反应
    问题今天在练习自动化的时候,运行后浏览器一直不调用,要不就得等好久才会打开浏览器(已经配置了chromedriver的情况下)。一直显示如下画面,重装浏览器后问题也得不到解决。 解决方案selenium的版本有问题,在pycharm中把selenium的版本减低,我这里降低到4.1.1后问题解决.  ......
  • Python使用BeautifulSoup爬取人人影视的详情页面
    importrequests,jsonfrombs4importBeautifulSoupif__name__=='__main__':url="https://yyets.com/movies/201565/"headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537......
  • feapder通过selenium爬取网页数据-用到yield关键字可循环爬取
    importrandomimporttimeimportfeapderfromfeapder.utils.webdriverimportWebDriverfromparselimportSelectorfromfeapder.db.mysqldbimportMysqlDBfromselenium.webdriver.common.byimportByclassTestRender(feapder.AirSpider):db=MysqlDB()__cust......
  • 【Python爬虫--scrapy+selenium框架】超详细的Python爬虫scrapy+selenium框架学习笔记
    六,selenium想要下载PDF或者md格式的笔记请点击以下链接获取python爬虫学习笔记点击我获取Scrapy+selenium详细学习笔记点我获取Python超详细的学习笔记共21万字点我获取1,下载配置##安装:pipinstallselenium##它与其他库不同的地方是他要启动你电脑上的浏览器......
  • python selenium mysql -- 数据爬取2
    fromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydriver=webdriver.Chrome()driver.get('https://www.00ksw.com/html/120/120704/')zj_list=[]#使用更健壮的XPath或CSS选择器links=driver.find_elements(By.XPATH,'/html/bo......
  • Uscrapper:一款功能强大的网络资源爬取工具
    关于UscrapperUscrapper是一款功能强大的网络资源爬取工具,该工具可以帮助广大研究人员从各种网络资源中轻松高效地提取出有价值的数据,并且提供了稳定、友好且易于使用的UI界面,是安全研究人员和网络分析人员的强有力工具。Uscrapper最大程度地释放了开源情报资源的力量,该工具......
  • Selenium Python 无法找到仅有类的定义不清的网络按钮
    我拥有的HTML元素是YesCancel我想点击"是"按钮,因此我尝试了以下3种方法yes_driver2=driver.find_element("xpath",'//button[text()="Yes"]')yes_driver2.click()yes_driver3=driver.find_elements(By.XPATH,'//button[contains(text(),&q......
  • Python selenium webdriver
    元素定位第一步,导入selenium模块的webdrivier包importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportBy窗口最大化driver=maximize_window()第二步,调用webdriver包的Chrome类,返回chrome浏览器对象driver=webdriver.Chrome()第三步,如使用......
  • selenium模拟登录网站
     importtimeimportrequestsfromseleniumimportwebdriverfromselenium.webdriver.common.byimportBybrowser=webdriver.Edge()browser.maximize_window()url="https://m.xiaoshuopu.com/user/login.html"browser.get(url)username_input=b......
  • 如何隐藏 Firefox 窗口(Selenium WebDriver)?
    在Python中使用SeleniumWebDriver隐藏Firefox窗口通常涉及到配置FirefoxOptions来禁用其图形界面的显示。以下是一个详细的步骤和代码示例:1.首先,确保你已经安装了selenium库,以及geckodriver(适用于Firefox浏览器)。如果还没有安装,可以通过pip进行安装:```bashpipinstallsel......