A. XPathは抽出データにページを解析しました
いくつかの本は、「人類の簡単な歴史:動物からの神に」とサブタイトルされ、メインタイトルとコロンの後のテキストはなく、同じのxpathに、追加の抽出を必要とします。 そして、いくつかのタイトルを字幕なし、字幕を抽出するXPathにも使用されている場合は、使用トライので...除いて...に対処するために、間違って行くだろう。
name = p. xpath( './tr/td[2]/div[1]/a/text()' ) [ 0 ] . strip( )
name = name. replace( '\n' , '' ) . replace( ' ' , '' )
try :
add = p. xpath( './tr/td[2]/div[1]/a/span/text()' ) [ 0 ] . replace( ' ' , '' )
name = name + add
except :
pass
二つ。Xlwings格納されたデータ
使用してxlwingsをファイルに保存XLSXときは、開いたときにExcelが開いて、あなたが目に見える= Falseに設定することができます見たくありません。
app = xlwings. App( visible= False , add_book= False )
場合は wb = xlwings.Book()
、オープンのxlsxファイル、そして最後に()メソッドを終了していない、ちょうど)(wb.close。 アプリを使用する場合は、最後にapp.quit()。
app = xw. App( visible= False , add_book= False )
wb = app. books. add( )
'' '
wb. save( 'file.xlsx' )
wb. close( )
app. quit( )
(それは、既存のファイルの場合)xlwings save()メソッドがオーバーライドされます。
III。完全なコード
import requests
from lxml import etree
import xlwings as xw
import time
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36' ,
'Host' : 'book.douban.com'
}
books = [ ]
for i in range ( 0 , 10 ) :
link = 'https://book.douban.com/top250?start=' + str ( i* 25 )
res = requests. get( link, headers= headers, timeout= 20 )
print ( str ( i+ 1 ) , '页响应状态码:' , res. status_code)
html = etree. HTML( res. text)
paths = html. xpath( '//*[@id="content"]/div/div[1]/div/table' )
for p in paths:
name = p. xpath( './tr/td[2]/div[1]/a/text()' ) [ 0 ] . strip( )
name = name. replace( '\n' , '' ) . replace( ' ' , '' )
try :
add = p. xpath( './tr/td[2]/div[1]/a/span/text()' ) [ 0 ]
name = name + add
except :
pass
info = p. xpath( './tr/td[2]/p[1]/text()' ) [ 0 ]
rating = p. xpath( './tr/td[2]/div[2]/span[2]/text()' ) [ 0 ]
rating_people = p. xpath( './tr/td[2]/div[2]/span[3]/text()' ) [ 0 ] . strip( )
rating_people = rating_people. replace( '(' , '' ) . replace( ')' , '' ) . replace( '\n' , '' ) . replace( ' ' , '' ) . replace( '人评价' , '' )
quote = p. xpath( './tr/td[2]/p[2]/span/text()' ) [ 0 ]
book_link = p. xpath( './tr/td[2]/div[1]/a/@href' ) [ 0 ]
books. append( [ name, info, rating, rating_people, quote, book_link] )
time. sleep( 2 )
print ( 'Writing into file...' )
app = xw. App( visible= False , add_book= False )
wb = app. books. add( )
sht0 = wb. sheets[ 0 ]
sht0. range ( 'A1' ) . value = [ '书名' , '作者/出版社/出版时间/定价' , '评分' , '评价人数' , '评语' , '网址' ]
sht0. range ( 'A2' ) . value = books
wb. save( 'books_by_xpath.xlsx' )
wb. close( )
app. quit( )
print ( 'Finish!' )