использовалselenium,BeautifulSoup
Первый — это самый простой код инициализации.
baseURL = "http://xwxmovie.cn/"
headers = {
'Host': 'xwxmovie.cn',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/64.0.3282.167 Safari/537.36"'
}
def browser_get():
browser = webdriver.Chrome()
browser.get(baseURL)
html_text = browser.page_source
page_count = get_page_count(html_text)
get_page_data(html_text)
Сначала я хотел использовать BeautifulSoup для захвата клипов, но не решался изучить его, и многие API еще не использовались.Наконец, я использовал регулярные выражения для сопоставления нужной области, а затем использовал BeautifulSoup для сопоставления названия фильма и другая информация;
items = re.findall(re.compile('<div id="post-.*?class="post-.*?style="position:.*?>'
'.*?<div class="pinbin-image">(.*?)</div>'
'.*?<div class="pinbin-category">(.*?)</div>'
'.*?<div class="pinbin-copy">(.*?)</div>'
'.*?</div>', re.S), html)
В это время мы должны циклически повторять один за другим, чтобы найти то, что мы хотим;
for item in items:
if item[0].strip():
soup = BeautifulSoup(item[0].strip(), 'html.parser')
img = soup.find('img', attrs={'class': 'attachment-detail-image wp-post-image'})
# 图片
print("海报:" + img.get('src'))
if item[1].strip():
soup = BeautifulSoup(item[1].strip(), 'html.parser')
categorys = soup.find_all('a')
for category in categorys:
print(category.get_text())
if item[2].strip():
soup = BeautifulSoup(item[2].strip(), 'html.parser')
title = soup.find('a', attrs={'class': 'front-link'})
print("电影名:" + title.get_text())
print("链接地址:" + title.get('href'))
date = soup.find('p', attrs={'class': 'pinbin-date'})
print("日期:" + date.get_text())
brief = soup.find_all('p')
print("简介:" + brief[1].string)
Вышеупомянутое, чтобы получить страницу данных;
# 得到总页数
def get_page_count(html):
soup = BeautifulSoup(html, 'html.parser')
page_count = soup.find('span', attrs={'class': 'pages'})
return int(page_count.get_text()[-4:-2])
Окончательный код выглядит следующим образом:
# -*- coding: UTF-8 -*-
from selenium import webdriver
from bs4 import BeautifulSoup
import re
baseURL = "http://xwxmovie.cn/"
headers = {
'Host': 'xwxmovie.cn',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/64.0.3282.167 Safari/537.36"'
}
def browser_get():
browser = webdriver.Chrome()
browser.get(baseURL)
html_text = browser.page_source
page_count = get_page_count(html_text)
get_page_data(html_text)
# 得到总页数
def get_page_count(html):
soup = BeautifulSoup(html, 'html.parser')
page_count = soup.find('span', attrs={'class': 'pages'})
return int(page_count.get_text()[-4:-2])
def get_page_data(html):
items = re.findall(re.compile('<div id="post-.*?class="post-.*?style="position:.*?>'
'.*?<div class="pinbin-image">(.*?)</div>'
'.*?<div class="pinbin-category">(.*?)</div>'
'.*?<div class="pinbin-copy">(.*?)</div>'
'.*?</div>', re.S), html)
for item in items:
if item[0].strip():
soup = BeautifulSoup(item[0].strip(), 'html.parser')
img = soup.find('img', attrs={'class': 'attachment-detail-image wp-post-image'})
# 图片
print("海报:" + img.get('src'))
if item[1].strip():
soup = BeautifulSoup(item[1].strip(), 'html.parser')
categorys = soup.find_all('a')
for category in categorys:
print(category.get_text())
if item[2].strip():
soup = BeautifulSoup(item[2].strip(), 'html.parser')
title = soup.find('a', attrs={'class': 'front-link'})
print("电影名:" + title.get_text())
print("链接地址:" + title.get('href'))
date = soup.find('p', attrs={'class': 'pinbin-date'})
print("日期:" + date.get_text())
brief = soup.find_all('p')
print("简介:" + brief[1].string)
if __name__ == '__main__':
browser_get()