Files
tophux_scrape/__pycache__/selenium_scraper.cpython-38.pyc

83 lines
6.3 KiB
Plaintext
Raw Normal View History

2025-11-14 21:03:48 +08:00
U
<00><>i<00>@s<>dZddlZddlZddlmZddlmZddlmZddl m
Z
ddl m Z ddl Z Gdd <09>d <09>Zd
d <0B>Zed kr|e<0F>dS) uo
使用Selenium依附Edge浏览器爬取网页数据
主要功能:爬取景区、分类、热度指数数据
<EFBFBD>N)<01> webdriver)<01>By)<01>Options)<01>NoSuchElementException)<01>loggerc@s\eZdZdZddd<04>Zdd<06>Zdd<08>Zd d
<EFBFBD>Zd d <0C>Zd d<0E>Z dd<10>Z
ddd<13>Z dd<15>Z dS)<19>WebDataScraperu网页数据爬取器FcCs"d|_||_|<00><02>t<03>d<02>dS)u_
初始化爬虫
Args:
headless (bool): 是否无头模式
Nu爬虫初始化完成)<05>driver<65>headless<73> setup_driverr<00>info)<02>selfr <00>r <00>SC:\Users\xiaji\Documents\个人文件夹\夏骥\hothub的抓取\selenium_scraper.py<70>__init__szWebDataScraper.__init__c
Cs<>z<>t<00>}|<00><01>}|r$|<01>d|<02><00><02>|jr4|<01>d<02>|<01>d<03>|<01>d<04>|<01>d<05>|<01>ddg<01>|<01>dd <09>tj|d
<EFBFBD>|_|j<07>d <0B>t <09>
d <0C>Wn4t k
r<EFBFBD>}zt <09> d |<03><00><02><00>W5d}~XYnXdS)u设置Edge浏览器驱动z--user-data-dir=z
--headlessz --no-sandboxz--disable-dev-shm-usagez---disable-blink-features=AutomationControlledZexcludeSwitcheszenable-automationZuseAutomationExtensionF)ZoptionszEObject.defineProperty(navigator, 'webdriver', {get: () => undefined})uEdge浏览器连接成功u浏览器连接失败: N) r<00>_get_edge_user_data_dirZ add_argumentr Zadd_experimental_optionrZEdgerZexecute_scriptrr <00> Exception<6F>error)r Z edge_optionsZ user_data_dir<69>er r rr
s$



  zWebDataScraper.setup_driverc Csndddg}|D]P}z2ddl}|j<01>|<02>rBt<03>d|<02><00><02>|WSWqtk
r\YqYqXqt<03>d<07>dS)u+获取Edge浏览器用户数据目录路径z5C:\Users\XiaJi\AppData\Local\Microsoft\Edge\User Dataz5C:\Users\xiaji\AppData\Local\Microsoft\Edge\User Datau9C:\Users\用户名\AppData\Local\Microsoft\Edge\User DatarNu找到Edge用户数据目录: u7未找到Edge用户数据目录将使用默认配置)<07>os<6F>path<74>existsrr r<00>warning)r Zpossible_pathsrrr r rr=s<02>  
z&WebDataScraper._get_edge_user_data_dirc Csf<00>z"t<00>d|<01><00><02>|j<02>|<01>t<04>d<02>t<00>d<03>|j<02>tjd<04>}|<02> tj
d<05>}t<00>dt |<03><01>d<07><03>g}|D]<5D>}zV|<00> |<05>}|<00> |<05>}|<00>|<05>}t|||g<03>r<>|||d<08>} |<04>| <09>t<00>d | <09><00><02>Wqptk
<EFBFBD>r}
zt<00>d
|
<EFBFBD><00><02>WY<00>qpW5d }
~
XYqpXqpt<00>d t |<04><01>d <0A><03>|WStk
<EFBFBD>r`}
zt<00>d|
<EFBFBD><00><02>gWY<00>Sd }
~
XYnXd S)u<>
爬取网页数据
Args:
url (str): 要爬取的网页URL
Returns:
list: 爬取的数据列表
u开始访问网页: <20>u2查找目标表格容器: class='byted-table-body'zbyted-table-bodyZdivu找到 u
行数据)<03> poi_title<6C>category<72>
heat_indexu成功爬取数据: u爬取行数据失败: Nu爬取完成,共获得 u
条数据u爬取数据失败: )rr r<00>get<65>time<6D>sleep<65> find_elementr<00>
CLASS_NAME<EFBFBD> find_elementsZTAG_NAME<4D>len<65>_get_poi_title<6C> _get_category<72>_get_heat_index<65>any<6E>appendrrr) r <00>url<72>
table_bodyZ data_rows<77> scraped_dataZrowrrrZrow_datarr r r<00> scrape_dataRs: 




<02>
zWebDataScraper.scrape_datac
Cs<>z:|<01>tjd<01>}|r8|dj<03><04>}t<05>d|<03><00><02>|WSWnDtk
rNYn2tk
r~}zt<05>d|<04><00><02>W5d}~XYnXdS)u获取景区名字z[class^='poiTitle-']ru获取景区名字: u获取景区名字失败: N<><00> r!r<00> CSS_SELECTOR<4F>text<78>stripr<00>debugrr)r <00> row_elementZ poi_elementsr/rr r rr#<00>s
"zWebDataScraper._get_poi_titlec
Cs<>z:|<01>tjd<01>}|r8|dj<03><04>}t<05>d|<03><00><02>|WSWnDtk
rNYn2tk
r~}zt<05>d|<04><00><02>W5d}~XYnXdS)u获取景区分类zlass^='categoryIconBox-']ru获取景区分类: u获取景区分类失败: Nr,r-)r r2Zcategory_elementsr/rr r rr$<00>s
"zWebDataScraper._get_categoryc
Cs<>z:|<01>tjd<01>}|r8|dj<03><04>}t<05>d|<03><00><02>|WSWnDtk
rNYn2tk
r~}zt<05>d|<04><00><02>W5d}~XYnXdS)u获取热度指数z[class^='numberValue-']ru获取热度指数: u获取热度指数失败: Nr,r-)r r2Z heat_elementsr/rr r rr%<00>s
"zWebDataScraper._get_heat_index<65>scraped_data.jsonc
Csxz@t|ddd<03><03>}tj||ddd<06>W5QRXt<03>d|<02><00><02>Wn2tk
rr}zt<03>d|<04><00><02>W5d }~XYnXd S)
u保存数据到文件<E69687>wzutf-8)<01>encodingF<67>)Z ensure_asciiZindentu数据已保存到 u保存数据失败: N)<07>open<65>json<6F>dumprr rr)r <00>data<74>filename<6D>frr r r<00> save_data<74>s zWebDataScraper.save_datacCs|jr|j<00><01>t<02>d<01>dS)u关闭浏览器u浏览器已关闭N)r<00>quitrr )r r r r<00>close<73>s
zWebDataScraper.closeN)F)r3) <0A>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rr
rr+r#r$r%r=r?r r r rrs
8
rc
Cs<>tdd<02>}z<>zNd}|<00>|<01>}|<00>|d<04>|D]*}td|d<00>d|d<00>d |d
<00><00><06>q,Wn2tk
r<EFBFBD>}zt<06>d |<04><00><02>W5d }~XYnXW5|<00><01>Xd S) u主函数示例F)r zhttps://example.com/target-pager3u景区: ru
, 分类: ru
, 热度: ru程序执行失败: N)rr?r+r=<00>printrrr)<05>scraper<65>
target_urlr*<00>itemrr r r<00>main<69>s

 ,&rH<00>__main__)rCr<00>reZseleniumrZselenium.webdriver.common.byrZselenium.webdriver.edge.optionsrZselenium.common.exceptionsr<00>logururr8rrHr@r r r r<00><module>s     6