Я начинаю работать с рептилиями и пытаюсь выполнить второе упражнение по сканированию на основе Feedly (Feedly RSS - первый раз, когда я думаю): он не открывает веб-сайт для просмотра новостей, только заголовок, ссылку на источник и время обновления)
Это мой код, первый пробный с питоном.
Я думал, что мне может понадобиться сканировать мои корневые сайты подписки, и мне может понадобиться написать скрипт Scrapy и использовать для этого MangoDB или Excel / CSV?
В этом случае я даже подумал, что мне следует разработать приложение macOS, чтобы показать результат сканирования, и я разработал пользовательский интерфейс приложения, или использовать Python QT и выучил QT。
Сначала я попытался напечатать ссылки и заголовок, но Feedly должен дважды нажать, чтобы отобразить исходную страницу, поэтому я выбираю запись Feedly.
Код Python:
def get_url(url): # 获得每一页新闻的原始链接
news_url = requests.get('urls',headers)
soup = BeautifulSoup(news_url.text, 'lxml')
links = soup.select('#.*?\=_16b.*?\:2.*?\:d02fd57c_entry_title')
for link in links:
href = link.get('href')
print(href)
#if __name__ == '__main__':
# urls = ['https://feedly.com/i/entry/'.format(number) for number in range(1,16)]
# for url in urls:
# get_url(url)
# time.sleep(2)
LogCat:
File "aa2.py", line 17
print(href)
^
IndentationError: unindent does not match any outer indentation level
Я думаю, что мне не нужно использовать Feedly API. , Поскольку я использовал chrome, чтобы увидеть информацию о json, в которой есть только заголовки и подтипы, но я не пробовал, поэтому я выбрал сканирование в Интернете.
Я обнаружил, что в Feedly "check" (Использовать Chrome) у json есть только заголовок и непрочитанные, нет "времени обновления" и категории ".
Я обнаружил, что у Feedly jeson есть только заголовок и непрочитанные, нет "времени обновления" и категории "
Вот мой весь код:
import requests
import time
from lxml import etree
from bs4 import BeautifulSoup
# import pymongo MongoDB数据库
# import xlwt EXCEL
# import csv CSV
headers = {
'cookie': '', # 传入cookies
'user-agent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko)'
'Version/11.0 Mobile/15A5341f Safari/604.1'
}
def get_url(url): # 获得每一页新闻的原始链接
news_url = requests.get(url, headers)
soup = BeautifulSoup(news_url.text, 'lxml')
links = soup.select('#.*?\=_16b.*?\:2.*?\:d02fd57c_entry_title')
for link in links:
href = link.get('href')
get_newsinfo(href)
get_url(url)
def get_newsinfo(url):
news_title = requests.get(url, headers)
soup = BeautifulSoup(news_title.text,'lxml')
news_titles = soup.select('#.*?\=_16b.*?\:2.*?\:d02fd57c_entry_title')
news_links = soup.select('#.*?\=_16b.*?\:2.*?\:d02fd57c_entry_title')
for link in news_links:
href = link.get('href')
return href
news_updatetimes = soup.select('#>*?\=_16b03.*?\:2.?*\:5de7e37_entryHolder > div.u100Entry > div.entryHeader > div.fx.metadata > span:nth-child(3)')
for news_title, news_link, news_updatetime in zip(news_titles, news_links, news_updatetimes):
data = {
'NewsTitle':news_title.get_text(),
'Updatetime':news_updatetime.get_text(),
'NewsLink':news_link.get.text()
}
print(data)
get_newsinfo(url)
if __name__ == '__main__':
urls = ['https://feedly.com/i/entry/'.format(number) for number in range(1, 14)]
for url in urls:
get_url(url)
time.sleep(2)
# wbdata = []
# newsList = ['ifanr', 'huxiu', '36kr']
#
# if newsList[0] = wbdata:
# wbdata = requests.get('http://****.com',headers)
# def news_title(url):
# news_info = requests.get('https://feedly.com/v3/streams/contents?streamId=user%**********-dfb0-46c7-b688-***********%2Fcategory%2F%E7%A7%91%E6%8A%80&count=20&unreadOnly=true&ranked=newest&similar=true&continuation=16b01e292f7:3277d:5de7e37&ck=1559135018763&ct=feedly.desktop&cv=31.0.357', headers)
> ********* is my privacy, not show.
# d = news_info.json() tried use json
# artititles = d['title']
# print(len(artititles))
# for artititle in artititles:
# yield artititle['title']
Я надеюсь, что news_title news_updatetime news_links.
Вот мой logcat:
FelixdeMacBook-Pro:Desktop felixxiong$ python3 feedlynewsupdate.py
Traceback (most recent call last):
File "feedlynewsupdate.py", line 61, in <module>
get_url(url)
File "feedlynewsupdate.py", line 23, in get_url
links = soup.select('#.*?\=_16b.*?\:2.*?\:d02fd57c_entry_title')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/bs4/element.py", line 1376, in select
return soupsieve.select(selector, self, namespaces, limit, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/__init__.py", line 114, in select
return compile(select, namespaces, flags, **kwargs).select(tag, limit)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/__init__.py", line 63, in compile
return cp._cached_css_compile(pattern, namespaces, custom, flags)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/css_parser.py", line 214, in _cached_css_compile
CSSParser(pattern, custom=custom_selectors, flags=flags).process_selectors(),
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/css_parser.py", line 1113, in process_selectors
return self.parse_selectors(self.selector_iter(self.pattern), index, flags)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/css_parser.py", line 946, in parse_selectors
key, m = next(iselector)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/soupsieve/css_parser.py", line 1100, in selector_iter
raise SelectorSyntaxError(msg, self.pattern, index)
soupsieve.util.SelectorSyntaxError: Malformed id selector at position 0
line 1:
#.*?\=_16b.*?\:2.*?\:d02fd57c_entry_title
^
Спасибо!