抓取动态网页(soup搜索节点操作删除节点的一种好的方法(上))

优采云 发布时间: 2021-09-18 22:23

  抓取动态网页(soup搜索节点操作删除节点的一种好的方法(上))

  之前:本文主要介绍页面加载后如何通过JS抓取需要加载的数据和图片

  本文基于Python中的selenium(pyhton包)+Chrome(谷歌浏览器)+Chrome驱动器(谷歌浏览器驱动程序)

  建议下载chrome和chromdrive的最新版本(参考地址:)

  还支持无头模式(无需打开浏览器)

  直接代码:站点\ URL:要爬网的地址,chrome \驱动程序\路径:chromedrive存储地址

   1 def get_dynamic_html(site_url):

2 print('开始加载',site_url,'动态页面')

3 chrome_options = webdriver.ChromeOptions()

4 #ban sandbox

5 chrome_options.add_argument('--no-sandbox')

6 chrome_options.add_argument('--disable-dev-shm-usage')

7 #use headless,无头模式

8 chrome_options.add_argument('--headless')

9 chrome_options.add_argument('--disable-gpu')

10 chrome_options.add_argument('--ignore-ssl-errors')

11 driver = webdriver.Chrome(executable_path=CHROME_DRIVER_PATH,chrome_options=chrome_options)

12 #print('dynamic laod web is', site_url)

13 driver.set_page_load_timeout(100)

14 #driver.set_script_timeout(100)

15 try:

16 driver.get(site_url)

17 except Exception as e:

18 #driver.execute_script('window.stop()') # 超出时间则不加载

19 print(e, 'dynamic web load timeout')

20 data = driver.page_source

21 soup = BeautifulSoup(data, 'html.parser')

22 try:

23 driver.quit()

24 except:

25 pass

26 return soup

  返回一个soup,以便在此soup中搜索节点,并使用select、search、find和其他方法查找所需的节点或数据

  同样,如果您想将其作为文本下载,则

  1 try:

2 with open(xxx.html, 'w+', encoding="utf-8") as f:

3 #print ('html content is:',content)

4 f.write(get_dynamic_html('https://xxx.com').prettify())

5 f.close()

6 except Exception as e:

7 print(e)

  让我们详细谈谈寻找美丽的汤

  首先,如何导航到标签

  1.use find(博主详细介绍)

  2.使用选择

  通过类似于jQuery的标记名、类名和ID选择器选择位置,例如soup。选择('p.Link#link1')

  通过属性查找,如href、title、link和其他属性,如soup。选择('PA[href=”“]”)

  这里的比赛是最小的,他的上级是

  然后我们来讨论节点的操作

  删除节点标记。分解

  插入子节点标记。在指定位置插入(0,chlid_标记)

  最后,使用靓汤是过滤滤芯的好方法。在下一章中,我们将引入正则表达式匹配来过滤爬虫内容

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线