python爬虫task4

1,用selenium爬取https://news.qq.com/ 的热点精选

1.1,ajax

1,ajax是一种创建交互式网页应用的网页开发技术,也称为无刷新技术,即页面不刷新,即可加载动态数据。
2,ajax请求的五个步骤:
1).创建一个XMLHttpRequest异步对象
2).设置请求方式和请求地址
3).接着,用send发送请求
4).监听状态变化
5).最后,接收返回的数据
具体查看Ajax数据爬取-爬虫篇

1.2 滚动页面

1,execute_script方法调用原生JavaScript的api
2,window.scrollTo()调整浏览器滚动条位置
二者实现滚动浏览器页面。

3,实战

import time
from  selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
driver=webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get("https://news.qq.com")

for i in range(1,10):
    time.sleep(1)
    driver.execute_script("window.scrollTo(window.scrollX, %d);"%(i*200))

html=driver.page_source
bsObj=BeautifulSoup(html,"lxml")

jxtits=bsObj.find_all("div",{"class":"jx-tit"})[0].find_next_sibling().find_all("li")
print("index", ",", "title", ",", "url")

list_news=[]
for i, jxtit in enumerate(jxtits):
    try:
        text = jxtit.find_all("img")[0]["alt"]
    except:
        text = jxtit.find_all("div", {"class": "lazyload-placeholder"})[0].text
    try:
        url = jxtit.find_all("a")[0]["href"]
    except:
        print(jxtit)
    info_news=[i+1,text,url]
    list_news.append(info_news)    
    print(i + 1, ",", text, ",", url)

name = ['index', 'title', 'url']
test = pd.DataFrame(columns=name, data=list_news)
test.to_csv('news.csv')

你可能感兴趣的:(python爬虫task4)