我想要一些有关如何从该网站抓取数据的建议。
我从硒开始,但一开始就陷入困境,因为例如,我不知道如何设置日期。
直到现在我的代码:
from bs4 import BeautifulSoup as soup
from openpyxl import load_workbook
from openpyxl.styles import PatternFill, Font
from selenium import webdriver
from selenium.webdriver.common.by import By
import datetime
import os
import time
import re
day = datetime.date.today().day
month = datetime.date.today().month
year = datetime.date.today().year
my_url = 'https://www.eex-transparency.com/homepage/power/germany/production/availability/non-usability-by-unit/non-usability-history'
cookieValue = '12-c12-cached|from:' +str(year)+ '-' +str(month)+ '-' +str(day-5)+ ','+'to:' +str(year)+ '-' +str(month)+ '-' + str(day) +',dateType:1,company:PreussenElektra,fuel:uranium,canceled:0,durationComparator:ge,durationValue:5,durationUnit:day'
#saving url
browser = webdriver.Chrome(executable_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
my_url = 'https://www.eex-transparency.com/homepage/power/germany/production/availability/non-usability-by-unit'
browser.add_cookie({'name': 'tem', 'value': cookieValue})
browser.get(my_url)
my_url = 'https://www.eex-transparency.com/homepage/power/germany/production/availability/non-usability-by-unit/non-usability-history'
browser.get(my_url)
很明显,我不是在询问代码,只是关于如何继续使用Selenium(如何设置日期和其他数据)的一些建议,或者关于如何抓取this website
的任何想法。谢谢。
编辑:我正在尝试遵循cookie的方式。那是我的更新代码,我读到需要在加载页面之前创建cookie,所以我知道了为什么它不起作用?
答案 0 :(得分:1)
您是否决定使用硒而不是其他Web抓取工具(scrappy,urllib等)?我个人没有使用过Selenium,但是我使用了其他一些工具。下面是一个脚本示例,该脚本仅从页面中提取所有html。
import urllib
import urllib2
from bs4 import BeautifulSoup as soup
link = "https://ubuntu.com"
page = urllib2.urlopen(link)
data = soup(page, 'html.parser')
print (data)
这只是一个短脚本,用于将所有HTML提取到页面上。我相信BeautifulSoup还有其他用于将数据输入字段的工具,但是确切的方法现在让我无所适从,如果我能找到关于它的注释,我会编辑这篇文章。我记得那很简单。
祝你好运!
编辑:这是我之前保存过https://www.reddit.com/r/Python/comments/1qnbq3/webscraping_selenium_vs_conventional_tools/
的讨论网页抓取工具答案 1 :(得分:1)
您最好的方法是更改cookie,因为每个过滤器数据都保存在cookie中。
检查Chrome ( f12 -> application -> cookies )
中的Cookie并使用过滤器。如果要在程序员工具中更改它,则必须刷新网站:)
Check this post on how to change cookies in selenium python.
要从网站上获取价值,您必须像在这里一样使用经典方式,但是您将必须使用类:
radio = browser.find_elements_by_class_name('aaaaaa')
您始终可以使用xPath搜索元素(chrome会为您生成它们)。