Я уже несколько лет на пенсии, но раньше был опытным программистом. Я использовал ООП и функциональные языки, а также Лисп и Пролог.
Я использую высокопроизводительный настольный ПК с Windows 7.
Вопрос
Я хочу быстро взломать некоторое программное обеспечение, которое будет автоматически входить на указанный веб-сайт и извлекать текст. Он должен будет иметь возможность листать страницы на форумах. Я буду выполнять предварительную обработку во время извлечения, а затем постобработку всех созданных файлов.
Я очень устарел от того, какие языки используются в наши дни. Я мог бы сделать все это в VBA для Excel, но я не думаю, что это лучший вариант. Также я хотел бы иметь возможность передавать программное обеспечение друзьям, у которых может не быть Excel.
В идеале я ищу свободно загружаемый язык с простой IDE, ориентированной на обработку текста. Я хотел бы очень быстро научиться, поэтому я избегаю универсальных языков для тяжелых условий эксплуатации, которые требуют от меня хлопот о загрузке библиотек и т. д.
Приветствуются все предложения и причины вашего выбора. Спасибо.
Python плюс один или несколько из Scrapy , Requests , Mechanize и т. д.
Пример использования Scrapy с сайта документации :
import scrapy
class StackOverflowSpider(scrapy.Spider):
name = 'stackoverflow'
start_urls = ['http://stackoverflow.com/questions?sort=votes']
def parse(self, response):
for href in response.css('.question-summary h3 a::attr(href)'):
full_url = response.urljoin(href.extract())
yield scrapy.Request(full_url, callback=self.parse_question)
def parse_question(self, response):
yield {
'title': response.css('h1 a::text').extract()[0],
'votes': response.css('.question .vote-count-post::text').extract()[0],
'body': response.css('.question .post-text').extract()[0],
'tags': response.css('.question .post-tag::text').extract(),
'link': response.url,
}
Это можно запустить как:
scrapy runspider stackoverflow_spider.py -o top-stackoverflow-questions.json
Что я только что попробовал на своем компьютере, и мне потребовалось менее 5 секунд, чтобы создать файл json размером 47 КБ, который запускается:
Существует большое количество бесплатных IDE для Python, и предпочтение в значительной степени зависит от личного выбора.
Python по умолчанию поставляется с холостым ходом, который работоспособен, но ограничен, лично я могу порекомендовать: - Wing IDE , версия 101 бесплатна , - SPE , - Spyder , - eric ide
Вики перечисляет множество сред разработки — вы можете использовать даже Eclipse с пакетом pyDev для полной функциональности IDE .
Как упоминалось в комментариях, я должен также упомянуть Beautiful Soup для полноты картины (и по-прежнему использовать Scrapy,-). Для IDE некоторые не думают, что вы можете превзойти версию PyCharm для сообщества, которую также можно использовать в коммерческих целях. - (Спасибо Мауг )
Если вы хорошо разбираетесь в Windows и VBA, то я предполагаю, что вам удастся написать некоторый связующий код на C#.
В общем, вам нужно как минимум 3 вещи:
https://stackoverflow.com/questions/12373738/how-do-i-set-a-cookie-on-httpclients-httprequestmessage
https://github.com/marek-stoj/NReadability
Вот vbscript, который я написал, который делает это.
Он проверяет местную погоду.
Он использует регулярное выражение для анализа текста.
Option Explicit
Dim shell : Set shell = CreateObject("WScript.Shell")
Const url = "http://www.cdcc.usp.br/clima"
Dim html, temp, umid, hora
Function getHtml(byRef url)
Dim xmlHttp : Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0")
xmlHttp.open "get", url, false
xmlHttp.send
getHtml = xmlHttp.responseText
End Function
Function parseRegEx(byRef sText, byRef regEx)
Dim oRegx, matches, match, i
Dim aResults : Redim aResults(0)
Set oRegx = New RegExp
With oRegx
.Pattern = replace(regEx, "`", chr(34) )
.IgnoreCase = True
.Global = True
End With
Set matches = oRegx.Execute(sText)
if (matches.Count>1) Then
For Each match in matches
'msgbox match.Value, 0, "Found Match"
If match.SubMatches.Count > 0 Then
For i = 0 To match.SubMatches.Count-1
Redim Preserve aResults(UBound(aResults)+1)
aResults(UBound(aResults)-1) = match.SubMatches(i)
Next
Else ' one reult only
aResults = match.Value
End If
Next
ElseIf (matches.Count=1) then ' only one match found
'msgbox matches(0).SubMatches(0)
'aResults = matches(0).SubMatches(0)
Redim aResults(1)
aResults(0) = matches(0).SubMatches(0)
end If
Set oRegx = nothing
parseRegEx = aResults
End Function
html = getHtml(url)
temp = parseRegEx(html, "<font face=`Arial` size=`5`>(.+)°C<\/font><\/b><\/td>")(0)
umid = parseRegEx(html, "umidade(?:.+\n).+(\d{2})%")(0)
hora = parseRegEx(html, "Atualizada às: <b>(\S+) <\/b>")(0)
msgbox temp & "°C", "Umidade: " & umid & "%" & chr(9) & "(" & hora & ")"
Мог говорит восстановить Монику