import time
from selenium import webdriver
from bs4 import BeautifulSoup
#driver=webdriver.Chrome(executable_path="D:\chromedriver\chromedriver.exe")
driver=webdriver.Chrome()
driver.get("https://news.qq.com")
#了解ajax加载
for i in range(1,10):
time.sleep(1)
driver.execute_script("window.scrollTo(window.scrollX, %d);"%(i*200))
#提取html内容,并用bs4解析
html=driver.page_source
#bsObj=BeautifulSoup(html,"lxml")
#jxtits=bsObj.find_all("div",{"class":"jx-tit"})[0].find_next_sibling().find_all("li")
NO = 1
Soup=BeautifulSoup(html,"lxml")
for li in Soup.find_all("div","jx-tit")[0].next_sibling.children:
#print(NO,li)
#try:
text=li.find_all("img")[0]["alt"]
#except:
#text=li.find_all("div",{"class":"lazyload-placeholder"})[0].text
#try:
url=li.find_all("a")[0]["href"]
#except:
#print(li)
print(NO,",",text,",",url)
NO+=1
仿生爬结果.png
分析过程:
寻找标志
从热点精选的开始,寻找<div class =" jx-tit ">的标签的邻标签的孩子 <li>标签,都是新闻。
新闻html特征
新闻html特征2.png
观察到有两种class的新闻<li>,但其新闻链接和标题的标签格式(<a helf><img>)是相同的,因此可同时特征提取。